• le mois dernier
Le PygmyRobot est équipé de quatre capteurs de suivi de ligne. Ils ont le mode de fonctionnement suivant : pour le blanc ils lisent la valeur 1 et pour le noir 0. Pour une plus grande efficacité les capteurs sont disposés à l'intérieur de la ligne noire. Lorsque le robot rencontre une ligne à angle droit par exemple allant vers la gauche le capteur INITLF3 détectera le noir et lira 0 ce qui déclenchera la condition avancer de 14 pas puis tourner à gauche de 90°. Il en est de même avec le capteur INITLF4 pour tourner à droite. Lorsque les capteurs INITLF1 et INITLF2 rencontrent une bande blanche ils lisent 1 et les moteurs s'arrêtent pendant deux secondes.
Le code dans Pygmy Forth est le suivant :
(Pygmy Forth primitif en Python.)
" MotorAV.fth" LOAD (avant)
" MotorAR.fth" LOAD (arrière)
" initlf1.fth" LOAD (capteur central gauche)
" initlf2.fth" LOAD (capteur central droit)
" initlf3.fth" LOAD (capteur gauche droit)
" initlf4.fth" LOAD (capteur gauche)
" MotorStop.fth" LOAD (arrêt)
" TurnD.fth" LOAD (tourner à droite)
" TurnG.fth" LOAD (tourner à gauche)
" TurnG90.fth" LOAD (tourner à gauche de 90°)
" TurnD90.fth" LOAD (tourner à droite de 90°)
(contrôle du capteur)
: t INITLF1 ." center-LEFT" . CR INITLF2 ." center-RIGHT" . CR INITLF3 ." DROITE". CR INITLF4 ." GAUCHE". CR ;
: TOPDA ( -- ) BEGIN ( début de la boucle )
INITLF1 INITLF2 + 0 = IF MOTORAV
THEN ( fin de la branche conditionnelle )
INITLF1 1 = IF TURND MOTORAV THEN INITLF2 1 = IF TURNG MOTORAV ( si les deux capteurs centraux détectent blanc, soit 0, en avant)
THEN ( fin de la branche conditionnelle )
INITLF3 0 = IF TOPD TURNG90 MOTORAV ( si ce capteur n'est pas sur le blanc avant et tourne à gauche )
THEN ( fin de la branche conditionnelle )
INITLF4 0 = IF TOPD TURND90 MOTORAV ( si ce capteur n'est pas sur le blanc avant et tourne à droite )
THEN ( fin de la branche conditionnelle )
INITLF1 INITLF2 + 2 = IF MOTORSTOP ( si les capteurs sont sur le blanc les moteurs s'arrêtent 2 secondes )
THEN ( fin de branchement conditionnel )
AGAIN ( continuation de la boucle )
; ( fin du programme )