Programmation robot PIC basic

revean -  
 revean -
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.

1 réponse

  1. revean
     
    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