Il progetto consiste nel simulare un possibile sistema di semafori di automobili e pedoni a tempo.
Il semaforo dei pedoni entra in funzione dopo almeno un ciclo di semaforo per le automobili e se il pulsante viene premuto.
Il pulsante per interagire con i semafori per i pedoni é messo in PULL_DOWN con una resistenza da 1000 ohm.
Il sensore di luminosità ritorna un valore all'Arduino, se la luminosità é bassa la luce dei led sarà bassa, se riceve una forte luminosità i led faranno molta più luce.
I led vanno messi a PULL_DOWN con le resistenze da 220 ohm.
I led sono messi in ordine (rosso, arancione e verde) per simulare un vero semaforo.
// INPUT int sensore = A0; const byte button = 2; // bool volatile byte aEnebled = LOW; void setup() { // INPUT pinMode(button, INPUT); attachInterrupt(digitalPinToInterrupt(button), seqAuto, CHANGE); // Con questo codice il pulsante potrà venire sempre ascoltato durante l'algoritmo }
// Appena il pulsante viene premuto la variabile aEnebled viene settata "HIGH" così al prossimo ciclo partirà il semaforo dei pedoni // Alla fine del ciclo aEnebled verrà settata a "LOW" void seqAuto() { aEnebled = HIGH; }
// Viene memorizzato il valore che ritorna il sensore di luminosità in una variabile lum = analogRead(sensore); // Grazie al metodo map() é possibile "convertire" un range di valore ad un altro range, in questo caso da 0-1023 a 255-0 lum = map(lum, 0, 1023, 255, 0);Scarica codice completo
Ho avuto delle difficoltà a capire il funzionamento dell' Interrupt per il pulsante.
Il docente ha spiegato il funzionamento a tutti con l'aiuto del sito ufficiale Arduino a questa pagina.