Passer au playerPasser au contenu principal
  • il y a 1 an
Pour obtenir un fonctionnement régulier, il faut de séparer les actions lors des demi-tours. On définit une variable CCP qui alternativement se chargera d'un 0 ou d'un 1, ce qui marquera si les demi-tours sont dans le sens anti-horaire ou horaire.


( primitives Pygmy Forth )
: turnd 5 FOR MOTORAVGL NEXT ; ( la boucle prend 5 au lieu de 1 )
: turng 5 FOR MOTORAVDW NEXT ;( la boucle prend 5 au lieu de 1 )
: CturnGLpi 180 FOR MOTORARGL MOTORAVDW NEXT ; ( 180 déterminé empiriquement )
: CturnDWpi 200 FOR MOTORARDW MOTORAVGL NEXT ;( 200 déterminé empiriquement )
( application )
( aller-retour anti-horaire horaire )
VARIABLE CCP ( variable qui va marquer le sens anti-horaire ou horaire )
: STCM ( -- ) BEGIN INITLF1 INITLF2 AND 0= IF MOTORAV ( gestion suiveur de line )
THEN ( fin du branchement conditionnel )
INITLF2 1 = IF turnd ( gestion suiveur de line )
THEN ( fin du branchement conditionnel )
INITLF1 1 = IF turng ( gestion suiveur de line )
THEN ( fin du branchement conditionnel )
SURFC 1 = IF CCP @ 0= IF CturnGLpi 1 CCP ! ( si CCP égale zéro demi-tour anti-horaire et incrit 1 dans CCp )
ELSE ( sinon )
CturnDWpi 0 CCP ! ( demi-tour horaire et incrit 0 dans CCp )
THEN ( fin du branchement conditionnel )
THEN ( fin du branchement conditionnel )
AGAIN ( la boucle repart )
; ( finde code )
: Z STCM ; ( raccourci )

Catégorie

🤖
Technologie
Commentaires

Recommandations