case green:
if (millis() - timer >= pausa * 2/3) {
FSM1 = wait_button ;
- timer = millis();
+ timer += pausa * 2/3;
}
break;
case wait_button:
if (digitalRead(input) == LOW) {
+ delay(20); // Debouncing, si potrebbe fare con millis() o un interrupt
FSM1 = turn_yellow ;
timer = millis();
- delay(20); // Debouncing, si potrebbe fare con millis()
};
break;
case yellow :
if (millis() - timer >= pausa * 2/3) {
FSM1 = turn_red ;
- timer = millis();
+ timer += pausa * 2/3 ;
}
break;
case green:
if (millis() - timer >= pausa * 2/3) {
FSM2 = turn_yellow;
- timer = millis();
+ timer += pausa * 2/3;
}
break;
case yellow :
if (millis() - timer >= pausa / 3) {
FSM2 = turn_red ;
- timer = millis();
+ timer += pausa * 2/3;
}
break;