Programmation robot PIC basic

Fermé
revean - Modifié par revean le 23/05/2011 à 22:44
 revean - 28 mai 2011 à 19:02
Bonjour,

aujourd'hui je réalise un robot suiveur de ligne.
Le robot marche à l'aide de deux Servomoteur et de 4 capteur CNY 70 , contrôlé par un micro-controleur de marque PARALLAX.
J'ai aujourd'hui deux problèmes lié au programme , de 1 le sens de rotation de la sortie 8 , de deux , les capteurs qui ne marche pas.
Les servosmoteur tourne dans un sens différent et les capteurs ne capte rien ( avec le programme , ceux ci marche sous oscillo ) .

Voici le programme :

' {$STAMP BS2sx} 
' {$PBASIC 2.0} 

OUTPUT 7 
OUTPUT 8 
OUT7=1 
OUT8=1                          ' 1  2 |..| 3  4 
INPUT 1                         '   7      8 
INPUT 2 
INPUT 3 
INPUT 4 

Start: 

IF (IN3=1 AND IN2=1) THEN Go 
IF (IN2=0 OR IN1=0)  THEN GoGauche 
IF (IN3=0 OR IN4=0)  THEN GoDroite 

GoDroite: 
OUT8=1 
PAUSE 1 
OUT8=0 
PAUSE 20 
OUT7=1 
PAUSE 1 
OUT7=0 
PAUSE 10 
GOTO Start 

GoGauche: 
OUT7=1 
PAUSE 1 
OUT7=0 
PAUSE 20 
OUT8=1 
PAUSE 1 
OUT8=0 
PAUSE 10 
GOTO Start 

Go: 
OUT7=1 
OUT8=1 
PAUSE 1 
OUT7=0 
OUT8=0 
PAUSE 10 
GOTO Start 


7 et 8 sont les servos et 1 2 3 4 les capteurs.
Pouvez vous me dire ou sont les erreurs et que faut il modifier ?
Merci d'avance !

PS : Les CNY70 fonctionne en logique inverse.
A voir également:

1 réponse

Je up en remetant le nouveau programme :

' {$STAMP BS2sx}
' {$PBASIC 2.5}



OUTPUT 12 'Définition des entrées pour les servomoteurs : ici entrée 12 et 13'
OUTPUT 13 ' 1 2 |..| 3 4
INPUT 7 ' 7 8
INPUT 8 'Définition des entrées pour les capteurs : ici entrée 7,8,9 et 10
INPUT 9
INPUT 10

Start:
IF (IN8=1 AND IN9=1 AND IN7=1 AND IN10=1) THEN Go 'aller tout droit si capteur 3 et 2 capte une ligne blanche'
IF (IN8=0 OR IN7=0 AND IN9=1 AND IN10=1) THEN GoGauche 'aller à gauche si capteur 2 et 1 capte une ligne noire'
IF (IN9=0 OR IN10=0 AND IN8=1 AND IN7=1) THEN GoDroite 'aller à droite si capteur 3 et 4 detecte une ligne noire'
GOTO Go

GoDroite: 'Pour tourner à droite on actionne le servomoteur droit plus rapidement que le servomoteur gauche'
'OUT12=1
'PAUSE 1
OUT12=0
'PAUSE 20
OUT13=1
PAUSE 1
OUT13=0
PAUSE 10
GOTO start

GoGauche: 'Pour tourner à gauche on actionne le servomoteur gauche plus rapidement que le servomoteur droit'
'OUT13=1
'PAUSE 1
OUT13=0
'PAUSE 20
OUT12=1
PAUSE 1
OUT12=0
PAUSE 10
GOTO start



Go: 'Pour aller tout droit on actionne les deux servomoteurs à la même vitesse'
OUT12=1
PAUSE 1
OUT12=0
PAUSE 10
OUT13=1
PAUSE 1
OUT13=0
PAUSE 10
GOTO start


Au final le robot ne peux faire qu'une fois les sous programmes ( gogauche go et godroite

Merci
0