mainTitle = "Exemple de gestion de LEDs façon chenillard"; 
$this->asideSection = "Ceci est un exemple de gestion des ports sur Arduino en FORTH " 
. "dans lequel on gère six LEDs pour simuler un effet de chenillard."; 
?> 
\ ****************************************************************************** 
\ Exemple de gestion de LEDs façon chenillard 
\ 
\ 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 
-scroll              \ supprime les précédentes définitions crées après -cycle 
marker -scroll       \ définit le marqueur -readwrite 
decimal 
 
\ PORTC 
40 constant PORTC	\ Port C Data Register 
39 constant DDRC	\ Port C Data Direction Register 
38 constant PINC	\ Port C Input Pins 
 
: init-ddrc ( ---)      \ initialise PORTC en sortie sur tous les bits 
    $ff DDRC c!         \ active pins en sortie sur PORT C 
  ; 
: scroll-avt ( ---)     \ effet scroll vers avant 
    $80 PORTC c!  100 ms    \ 10000000 
    $40 PORTC c!  100 ms    \ 01000000 
    $20 PORTC c!  100 ms    \ 00100000 
    $10 PORTC c!  100 ms    \ 00010000 
    $08 PORTC c!  100 ms    \ 00001000 
    $04 PORTC c!  100 ms    \ 00000100 
  ; 
: scroll-ret ( ---)     \ effet scroll vers arrière 
    $04 PORTC c!  100 ms 
    $08 PORTC c!  100 ms 
    $10 PORTC c!  100 ms 
    $20 PORTC c!  100 ms 
    $40 PORTC c!  100 ms 
    $80 PORTC c!  100 ms 
  ; 
: boucle-scroll ( ---) 
    init-ddrc 
    begin 
        scroll-avt 
        scroll-ret 
    key? until 
    $00 PORTC c!  
  ; 
: kitt-scroll ( ---)  \ effet à la KITT de K2000 
    $80 PORTC c!  100 ms    \ 10000000 
    $c0 PORTC c!  100 ms    \ 11000000 
    $60 PORTC c!  100 ms    \ 01100000 
    $30 PORTC c!  100 ms    \ 00110000 
    $18 PORTC c!  100 ms    \ 00011000 
    $0c PORTC c!  100 ms    \ 00001100 
    $04 PORTC c!  100 ms    \ 00000100 
    $0c PORTC c!  100 ms    \ 00001100 
    $18 PORTC c!  100 ms    \ 00011000 
    $30 PORTC c!  100 ms    \ 00110000 
    $60 PORTC c!  100 ms    \ 01100000 
    $80 PORTC c!  100 ms    \ 10000000 
  ; 
: k2000 ( ---) 
    init-ddrc 
    begin 
        kitt-scroll 
    key? until 
    $00 PORTC c!  
  ;