#include <common.h>
const byte input = 2; // PIN del bottone
-int pausa = 3000;
+const int pausa = 3000;
enum states_available { // Stati della FMS
turn_green, // Dinamico, transizione
green, // Statico
state = turn_red ; // Il passaggio di stato avviene alla pressione di un bottone
delay(20);
};
-
break;
case turn_red :
red
};
-states_available FSM1 ;
-states_available FSM2 ;
+states_available FSM1 ; // Semaforo principale
+states_available FSM2 ; // Semaforo secondario
void setup() {
delay(pausa/3);
led_main.Red();
FSM1 = red ;
- FSM2 = turn_green; // Stimolo al semafor secondario
+ FSM2 = turn_green; // **** Stimolo al semaforo secondario
break;
case red :
case turn_red :
led_secondary.Yellow();
delay(pausa/3);
- FSM1 = turn_green ;
+ FSM1 = turn_green ; // ****
FSM2 = red ;
+ led_secondary.Red();
break;
case red :
- led_secondary.Red();
+ // niente da fare, statico
break;
}
// Debug
const byte input = 2; // PIN del bottone
int pausa = 3000;
long timer ;
+
enum states_available { // Stati della FMS
green, // Statico
wait_button, // Evento - Stimolo
case wait_button:
if (digitalRead(input) == LOW) {
- state = turn_yellow ; // Il passaggio di stato avviene alla pressione di un bottone
+ state = turn_yellow ;
delay(20); // Debouncing, si potrebbe fare con millis()
timer = millis();
};
turn_green, // Dinamico, transizione
green, // Statico
wait_button, // Evento - Stimolo
- turn_yellow, // Dinamico, transizione
- yellow, // Statico
+ turn_yellow, // Dinamico, transizione
+ yellow, // Statico
turn_red, // Dinamico, transizione
- turn_sec_yellow, // Yellow per semaforo secondario
- sec_yellow,
+ turn_sec_yellow,// Yellow per semaforo secondario
+ sec_yellow, // Statico
red // Statico
};
Uno stimolo esterno rappresentato dalla pressione di un bottone
causa il passaggio di stato.
+ Il semaforo resta verde fino a quando non riceve lo stimolo
+ (es passaggio pedonale).
Implementata con millis() invece che con delay(),
- sono stati aggiuntu due stati per meglio gestire lo stato yellow.
*/
const byte input = 2; // PIN del bottone
int pausa = 3000;
long timer ;
+boolean wait = 0; // Memoria bottone
+
enum states_available { // Stati della FMS
green, // Statico
yellow, // Statico
};
states_available state ;
-boolean wait = 0;
void setup() {
timer = millis();
}
-RGBLed led(11, 10, 9); //Istanziamo un oggetto led facente parte
-// della classe RGBLed
+RGBLed led(11, 10, 9);
void loop() {
switch (state) {