mainTitle = "Exemple de gestion de feux tricolores en FORTH, version condensée"; 
$this->asideSection = "Ceci est un exemple de getion des ports sur Arduino en FORTH " 
. "dans lequel on gère trois LEDs pour simuler un feu tricolore, en version condensée."; 
?> 
\ ****************************************************************************** 
\ Exemple de gestion de feux tricolores en FORTH - version condensée 
\ 
\ Forth version: Flash Forth (http://flashforth.com/)  
\ author: M PETREMANN 
\ Creation:     29 mai 2019 
\ Modification: 29 mai 2019 
\ ****************************************************************************** 
 
decimal 
flash    fl+         \ selection mémoire FLASH 
-cycle               \ supprime les précédentes définitions crées après -cycle 
marker -cycle        \ définit le marqueur -readwrite 
decimal 
 
\ PORTB 
37 constant PORTB	\ Port B Data Register 
36 constant DDRB	\ Port B Data Direction Register 
35 constant PINB	\ Port B Input Pins 
 
: attente-normale 1000 ms ;          \ tempo une seconde 
: attente-courte   300 ms ;          \ tempo 3/10ème seconde 
 
bin 
: cycle-fr ( ---) 
    00100000 PORTB c!  \ allume LED verte   éteint les autres 
    attente-normale 
    01000000 PORTB c!  \ allume LED jaune   éteint les autres 
    attente-courte 
    10000000 PORTB c!  \ allume LED rouge   éteint les autres 
    attente-normale 
    ; 
: cycle-de ( ---) 
    00100000 PORTB c!  \ allume LED verte   éteint les autres 
    attente-normale 
    01000000 PORTB c!  \ allume LED jaune   éteint les autres 
    attente-courte 
    10000000 PORTB c!  \ allume LED rouge   éteint les autres 
    attente-normale 
    11000000 PORTB c!  \ allume LED jaune et rouge   éteint les autres 
    attente-courte 
    ; 
decimal 
: feux-fr ( ---) 
    $e0 DDRB c!  \ E0 en hexa équivaut à 11100000 en binaire 
    begin 
        cycle-fr 
    key? until  
    $00 PORTB ! 
    ; 
: feux-de ( ---) 
    $e0 DDRB c!  \ E0 en hexa équivaut à 11100000 en binaire 
    begin 
        cycle-de 
    key? until  
    $00 PORTB ! 
    ;