]> git.piffa.net Git - sketchbook_andrea/blobdiff - advanced_projects/state_machine/semaforo_3_millis/semaforo_3_millis.ino
Merge branch 'master' of kim:/home/git/sketchbook_andrea
[sketchbook_andrea] / advanced_projects / state_machine / semaforo_3_millis / semaforo_3_millis.ino
index fea0a67c367a64210eb68d645c831f0ac50b7ce5..4cc7dcbb650d4972f7d571413c937239f5821eca 100644 (file)
@@ -19,7 +19,6 @@ const byte input = 2; // PIN del bottone
 int pausa = 3000;
 long timer ;
 enum states_available { // Stati della FMS
-    turn_green,    // Dinamico, transizione
     green,         // Statico
     wait_button,   // Evento - Stimolo
     turn_yellow,      // Dinamico, transizione
@@ -42,9 +41,6 @@ RGBLed led(11, 10, 9); //Istanziamo un oggetto led facente parte
 
 void loop() {
 switch (state) {
-case turn_green :
-    state = green ; // Setta il prossimo state
-    break;
 
 case green:
     led.Green();
@@ -81,7 +77,7 @@ case turn_red :
 case red :
     led.Red();
     if (millis() - timer >= pausa) {
-        state = turn_green ;
+        state = green ;
         timer += pausa ;
     }
     break;
@@ -102,9 +98,9 @@ Serial.println(state);
 }
 
 /* Domande:
- 1. Introdurre un secondo semaforo che cambia stato quando viene attivato
-    lo stimolo.
- 2. L'uso di delay() puo' essere limitativo: come rimediare?
+ 1. Fare in modo che nello stato verde venga recepito un'eventuale pressione
+ del bottone, venga comunque garantito un periodo minimo per il verde ma nel caso
+ sia stato premuto il bottone durante questo si passi poi direttamente al giallo.
 .
 .
 .
@@ -116,6 +112,5 @@ Serial.println(state);
 .
 .
   Soluzioni
-2. Si potrebbe utilizzare un interrupt per gli stimoli oppure millis()
-   per gestire le pause.
+1. Vedi esercizio: semaforo_rgb
  */