Quando qualcuno mi chiede che progetto affrontare, dopo quelli elementari con led e sensori, io suggerisco di implementare un semaforo stradale.
La prima realizzazione consiste nel far alternare correttamente la successione delle luci con le temporizzazioni prestabilite, e fino a qui in genere non ci sono difficoltà, ma il mio consiglio è di utilizzare da subito la funzione millis() per i passi successivi.
Il secondo passo consiste nell'introdurre un pulsante che consenta di far passare il semaforo da "funzionante" a "luci gialle lampeggianti" e viceversa, tenendo conto che il passaggio da "luci gialle lampeggianti" a "funzionante" deve avvenire correttamente: 1)luci gialle fisse, 2)verde da un lato e rosso dall'altro, 3)funzionamento normale.
Il terzo passo consiste nel rendere "intelligente" il semaforo. Simulando sensori stradali, si verifica la presenza di veicoli in entrambe le direzioni di marcia. Se in una certa direzione non ci sono veicoli, quando dovrebbe scattare il verde per quella direzione, la temporizzazione viene prolungata (ad esempio: raddoppiata) a meno che non sopraggiunga in quel periodo un veicolo; nel qual caso il semaforo provvede alla successione delle luci per dargli subito via libera, ritornando alle temporizzazioni precedentemente impostate.
Il quarto passo consiste nella predisposizione al passaggio pedonale. Se un pedone preme il pulsante di prenotazione, in funzionamento normale non succede niente, nel senso che le luci si alternano con le temporizzazioni normali, Nel funzionamento "intelligente" occorre predisporre la precedenza al pedone.
Se qualcuno lo ha implementato fino al quarto stadio non me l'ha MAI detto.
Ciao,
P.