Le test des Moteurs
Le but du programme est de tester les 9 états des moteurs du Monty.
Analyse du
problème
Composants utilisés
- Moteur G et D
- Capteur de choc G et D (0 : Choc, 1 : Libre)
- Buzzer
Stratégie
Les moteurs sont commandé par le port A du Pic.Un moteur peut avoir
trois états : Stop, Avant, Arrière.Mais en informatique on nutilise
que deux états 0, 1
Cest pour cela que nous avons besoin de deux ports par moteur.
Pour le moteur Droit : bit 0 : Avant, Bit 1 : Arrière. Pour le moteur Gauche bit 2 : Avant, Bit 1 : Arrière
Avec les deux ports, nous avons un quatrième état : La mise en marche avant et arrière du même moteur. (en mettant la valeur 1 sur le bit 0 et 1). Ceci à le même effet que de mettre, les deux bits à 0.
Comme nous avons 3 états pour le moteur Droit, et 3 pour le Gauche, nous avons 9 états en tout.
Dans les lignes suivantes je donne létat du gauche suivi du droit + Effet
SS -> arrêt
AA -> Avance
RR -> Recule
AS -> Tourne à droite
AR -> Tourne à droite sur place
RS -> Tourne à gauche en arrière (En réalité,
il va à droite en arrière, mais je préfère dire
que le monty pivot vers la gauche en mache arrière)
SA -> Tourne à Gauche
RA-> Tourne à Gauche sur place
SR ->Tourne à droite en arrière. (même remarque)
Nous avons deux possibilités pour actionner ces 9 déplacements.
1. Modifier les entrées du portA bit par bit. Cest comme cela que
lon fait dans les exemples de la revue. (explore1)
2. Une autre méthode consiste à envoyer directement les 4bits
sur le port.
La première possibilité :
On peut via les instructions bsf et bcf allumer ou éteindre un moteur. Il faut faire quatre bcf ou bsf pour configurer les deux moteurs.
La deuxième possibilité :
Comme dit plus haut, le PORTA est utilisé en sortie pour les moteurs et le bit 4 est utilisé pour le compteur (donc en entré).
Pour faire avancer le monty, il suffit de deux instructions, charger le registre W avec la valeur voulue(movlw AVANCE), et transférer cette valeur vers le port A (movwf PORTA)
AVANCE est initialisé comme les 8 autres possibilités :
| AVANCE | EQU | b'0101' | ; Moteur en avant |
| ARRIERE | EQU | b'1010' | ; Moteur Arrière |
| TG | EQU | b'0001 | ; Tourne à Gauche |
| TGS | EQU | b'1001' | ; Tourne à Gauche sur place |
| TGA | EQU | b'1000' | ; Tourne à Gauche en arrière |
| TD | EQU | b'0100' | ; Tourne à Droite |
| TDS | EQU | b'0110 | ; Tourne à Droite sur place |
| TDA | EQU | b'0010 | ; Tourne à Droite en arrière |
| STOP | EQU | b'0000' | ; Moteur STOP |
Le programme charge ces valeurs, l'une après l'autre. Pour passer à un autre état, il faut appuyer sur le bumper de droite. Ce programme cycle sur les 9 états.
Le programme
Version du 01/05/2002 :
(zip : 11K)
Je remercie Joël Paquet pour avoir tester toutes mes erreurs ! (Ils étaitent jolis les bugs !)
Il en reste malheureusement, mais plus il y a de testeurs, plus vite nous les trouverons.