Le test des Moteurs


  But du programme

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 n’utilise que deux états 0, 1
C’est 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. C’est comme cela que l’on 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.