4 Un singolo semaforo costruito col paradigma delle macchine a stato.
5 Viene utilizzato un oggetto della libreria common per gestire il LED.
7 Uno stimolo esterno rappresentato dalla pressione di un bottone
8 causa il passaggio di stato.
12 const byte input = 2; // PIN del bottone
14 enum states_available { // Stati della FMS
15 turn_green, // Dinamico, transizione
22 states_available state ;
26 pinMode(input, INPUT_PULLUP);
31 RGBLed led(11, 10, 9); //Istanziamo un oggetto led facente parte
32 // della classe RGBLed
38 state = green ; // Setta il prossimo state
47 if (digitalRead(input) == LOW) {
48 state = turn_red ; // Il passaggio di stato avviene alla pressione di un bottone
67 default: // In caso di default si fa giallo lampeggiante
75 Serial.print(millis());
76 Serial.print(" \t Stato attuale ");
77 Serial.println(state);
82 1. Introdurre un secondo semaforo che cambia stato quando viene attivato
84 2. L'uso di delay() puo' essere limitativo: come rimediare?
96 2. Si potrebbe utilizzare un interrupt per gli stimoli oppure millis()