poi ho descritto il campo giochi
ho messo le paline (scusate il gioco di parole)
che significa letteralmente ho descritto i collegamenti tra arduino e le paline dei semafori
// definizione paline
byte const P1R = 2; // palina 1 (e 3) rosso
byte const P1G = 3; // palina 1 (e 3) giallo
byte const P1V = 4; // palina 1 (e 3) verde
byte const P2R = 5; // palina 2 (e 4) rosso
byte const P2G = 6; // palina 2 (e 4) giallo
byte const P2V = 7; // palina 2 (e 4) verde
// per i pedoni
byte const PPV = 8; // verde per pedoni sottinteso rosso è negato
byte const PPG = 9; // Giallo per i pedoni
byte const CHI = 10; // led di conferma chiamate pedone presa in carico
byte const PUL = 11; // pulsante di chiamata pedone
byte const NOT = 12; // selettore servizio notturno
byte const SEG = 13; // Led lampeggiante per indicare impianto in servizio
// le paline 1 e 3 sono su una via e danno il verde assieme
// le paline 2 e 4 sono su altra via e danno il verde assieme
poi ho pensato che un semaforo è un oggetto ciclico
quindi basta scrivere una sequenza di azioni che si richiamano una con l'altra
e quindi mi son detto:
una bella tabella, scritta in codice parlante (vuol dire che si capisca cosa dice)
con la prima lettera comada la prima palina, e cos' via
// stabiliamo la sequenza di segnali
// 0 Palina Spenta
// R palina su rosso
// G palina su giallo - con verde acceso
// V palina su verde
// L palina con giallo senza verde
// per i segnali pedonali
// P luce verde al pedone, rosso sottinteso negato, basta la prima palina, lo raddoppio sulla seconda solo per estetica
// W luce verde al pedone, rosso sottinteso negato, buzzer inermittente per indicare giallo
// tempistica
// da definire
// A 1 secondo (usato per il giallo lampeggiante)
// B 5 secondi (sovrapposizione tra i due rossi, cambio tra auto e pedoni)
// C 15 seconfi (giallo prima del verde)
// D un minuto (usato per la via 1)
// E due minuti (usato per la via 2)
//sequenze:
// si legge: numero, non registrato, indice dello array
// stato palina 1, stato palina 2, durata, riga da leggere per la prossima
poi mi sono scritto come dovrebbe essere la sequenza delle azioni del semaforo
// sequenza normale
/* alternativa
0RRB1 due vie rosse, pronti per la via 1
1VRD2
2GRC3
3RRB4
4RVE5
5RGC0
che forse va anche meglio
*/
// sequenza di via pedone libera, parte da via 1 gialla
// attende lo stato 1GRC2....
// 6RRB7 vie impedite // non serve, ci siamo già
// 7PPD8 vie impedite, vie pedoni libere
// 8WWB0 vie impedite, vie pedoni libere, allarem pedoni affreettarsi
// da qui riprende ciclo normale,
// lampggio notturno
// 9LLA: occhio interessante usare : come 10
// :00A9 anello rapido di lampeggio
dove la sola cosa difficile è che avendo 11 righe ho dovuto usare il carattere successivo al 9 per indicare il 10
il carattere successivo al 9 è il duepunti
e si tratta di una tabella di 11 righe che contiene le sole 11 configurazioni possibili del semaforo
(anzi, 10, perchè una è risultata inutile, ma non sono stato li a toglierla)