'#################################################################################
'########################## Programme Secondaire ###########################
'#################################################################################
tourne_a_droite:
servo C.1, position_servo1 ' On reactive le servo car on l'avais mis sur Off
do
if virage_droite = 0 then exit ' si on tourne plus ou si virage sec ? gauche on arrete le mouvement a droite
inc position_servo1 ' On augmente de 1 la position pour atteindre 175
pause ralenti ' on fais une pause pour ralentir le mouvement du servo
servopos C.1,position_servo1 ' On place le servo ? sa nouvelle place
loop while position_servo1 < 175 ' Tant qu'on a pas atteint la valeur on continue
servo C.1, off ' une fois en position on eteint le servo
position_phare1 = 1 ' On indique qu'il est tourn? a droite ou qu'il a un peu tourn?
return ' On retourne au programme principal
droite_reviens_au_centre:
servo C.1, position_servo1 ' On reactive le servo car on l'avais mis sur Off
do
if virage_droite = 1 then exit ' si on tourne ? droite on arrete le mouvement de revenir au centre
if virage_gauche = 1 then exit ' Si on tourne a gauche on arrete le mouvement de revenir au centre
dec position_servo1 ' On diminue de 1 la position pour atteindre 150
pause ralenti ' on fais une pause pour ralentir le mouvement du servo
servopos C.1,position_servo1 ' On place le servo ? sa nouvelle place
loop while position_servo1 > 150 ' Tant qu'on a pas atteint la valeur on continue
servo C.1, off ' une fois en position on eteint le servo
position_phare1 = 0 ' On indique qu'il est centre ou qu'il a un peu tourn?
if virage_gauche = 1 then
position_phare1 = 1 ' si on tourne a sec a gauche on doit indiquer que le phare n'est pas encore revenu au centre
end if
return ' On retourne au programme principal
reviens_au_centre_plus_gauche:
servo C.1, position_servo1 ' On reactive le servo car on l'avais mis sur Off
servo C.2, position_servo2 ' On reactive le servo car on l'avais mis sur Off
do
if virage_gauche = 0 then exit ' Si on tourne plus a gauche on sort
if virage_droite = 1 then exit ' si virage sec a droite on sort
if position_servo1 > 150 then ' Si le servo1 n'as pas atteint 150 on decremente
dec position_servo1
end if
if position_servo2 > 125 then ' si le servo2 n'as pas atteint 125 on decremente
dec position_servo2
end if
pause ralenti ' pause pour ralentir
servopos C.1,position_servo1 ' On place le servo1 ? sa nouvelle place
servopos C.2,position_servo2 ' On place le servo2 ? sa nouvelle place
if position_servo1 > 149 and position_servo2 < 126 then ' tant que les deux servos ne sont arrives on contiue
exit
else
loop ' dès qu'il sont arrivés a leur position on sort
end if
servo C.1, off
servo C.2, off
position_phare2 = 1
position_phare1 = 0
if virage_gauche =0 and virage_droite = 0 then ' si l'interrutpion se fait quand les phares n'ont pas pus atteindre leurs positions
position_phare1 = 1 ' On indique que le phare droite est a droite ou au milieu
position_phare2 = 1 ' on indique que le phare gauche est a gauche ou au milieu
end if
return
tourne_a_gauche:
servo C.2, position_servo2 ' On reactive le servo car on l'avais mis sur Off
do
if virage_gauche = 0 then exit ' si on tourne plus ou si virage sec a droite on arrete le mouvement a gauche
dec position_servo2 ' On diminiue de 1 la position pour atteindre 125
pause ralenti ' on fais une pause pour ralentir le mouvement du servo
servopos C.2,position_servo2 ' On place le servo a sa nouvelle place
loop while position_servo2 > 125 ' Tant qu'on a pas atteint la valeur on continue
servo C.2, off ' une fois en position on eteint le servo
position_phare2 = 1 ' On indique qu'il est tourn? a droite ou qu'il a un peu tourn?
return ' On retourne au programme principal
gauche_reviens_au_centre:
servo C.2, position_servo2 ' On reactive le servo2 car on l'avais mis sur Off
do
if virage_droite = 1 then exit ' si on tourne a droite on arrete le mouvement de revenir au centre pour faire le mouvement de revenir au centr+ mouvement du phare droit
if virage_gauche = 1 then exit ' Si on tourne a gauche on arrete le mouvement de revenir au centre pour faire repartir le phare a gauche
inc position_servo2 ' On incremente de 1 la position pour atteindre 150
pause ralenti ' on fais une pause pour ralentir le mouvement du servo
servopos C.2,position_servo2 ' On place le servo2 a sa nouvelle place
loop while position_servo2 < 150 ' Tant qu'on a pas atteint la valeur du point milieu 150 on continue
servo C.2, off ' une fois en position on eteint le servo
position_phare2 = 0 ' On indique qu'il est centre ou qu'il a un peu tourné
if virage_droite = 1 then
position_phare2 = 1 ' si on tourne a sec a gauche on doit indiquer que le phare n'est pas encore revenu au centre pour effectuer un retour aucnetre+aller a droite
end if
return ' On retourne au programme principal
reviens_au_centre_plus_droite:
servo C.1, position_servo1 ' On reactive le servo car on l'avais mis sur Off
servo C.2, position_servo2 ' On reactive le servo car on l'avais mis sur Off
do
if virage_droite = 0 then exit ' Si on tourne plus a droite on sort
if virage_gauche = 1 then exit ' si virage sec a droite on sort
if position_servo1 < 175 then ' Si le servo1 n'as pas atteint la positon a droite on incremente
inc position_servo1
end if
if position_servo2 < 150 then ' si le servo2 n'as pas atteint la valeur du centre 150 on incremente
inc position_servo2
end if
pause ralenti ' pause pour ralentir
servopos C.1,position_servo1 ' On place le servo1 a sa nouvelle place
servopos C.2,position_servo2 ' On place le servo2 a sa nouvelle place
if position_servo1 > 174 and position_servo2 > 149 then ' tant que les deux servos ne sont arrives on continue
exit
else
loop
end if
servo C.1, off
servo C.2, off
position_phare1 = 1
position_phare2 = 0
if virage_gauche =0 and virage_droite = 0 then ' si l'interrutpion se fait quand les phares n'ont pas pus atteidnre leur positions
position_phare1 = 1 ' On indique que le phare droite est a droite ou au milieu
position_phare2 = 1 ' on indique que le phare gauche est a gauche ou au milieu
end if
return
deux_aux_centre:
servo C.1, position_servo1 ' On reactive le servo car on l'avais mis sur Off
servo C.2, position_servo2 ' On reactive le servo car on l'avais mis sur Off
do
if virage_droite = 1 then exit
if virage_gauche = 1 then exit
if position_servo1 > 150 then ' Si le servo1 n'as pas atteint 150 on decremente
dec position_servo1
end if
if position_servo2 < 150 then ' si le servo2 n'as pas atteint 125 on decremente
inc position_servo2
end if
pause ralenti ' pause pour ralentir
servopos C.1,position_servo1 ' On place le servo1 a sa nouvelle place
servopos C.2,position_servo2 ' On place le servo2 a sa nouvelle place
if position_servo1 < 151 and position_servo2 > 149 then ' tant que les deux servos ne sont arriv?s on contiue
exit
else
loop
end if
servo C.1, off ' On eteint le servo1
servo C.2, off ' On eteint le servo2
position_phare1 = 0 ' Une fois le phare1 au centre on l'indique
position_phare2 = 0 ' Une fois le phare2 au centre on l'indique
if virage_droite = 1 then
position_phare1 = 0
position_phare2 = 1
end if
if virage_gauche = 1 then
position_phare1 = 1
position_phare2 = 0
end if
return