led.Green();
if (millis() - timer >= pausa * 2/3) {
state = wait_button ;
- timer = millis();
+ timer += pausa * 2/3 ;
}
break;
case wait_button:
if (digitalRead(input) == LOW) {
state = turn_yellow ; // Il passaggio di stato avviene alla pressione di un bottone
- timer = millis();
delay(20); // Debouncing, si potrebbe fare con millis()
+ timer = millis();
};
break;
led.Yellow();
if (millis() - timer >= pausa * 2/3) {
state = turn_red ;
- timer = millis();
+ timer += pausa * 2/3;
}
break;
led.Red();
if (millis() - timer >= pausa) {
state = turn_green ;
- timer = millis();
+ timer += pausa ;
}
break;
case green:
if (millis() - timer => pausa * 2/3) {
state = wait_button ;
- timer = millis();
+ timer += pausa * 2/3 ;
}
break;
case wait_button:
if (digitalRead(input) == LOW) {
- state = turn_yellow ; // Il passaggio di stato avviene alla pressione di un bottone
delay(20); // Debouncing, si potrebbe fare con millis()
+ state = turn_yellow ; // Il passaggio di stato avviene alla pressione di un bottone
timer = millis();
};
case yellow :
if (millis() - timer >= pausa / 3) {
state = turn_red ;
- timer = millis();
+ timer += pausa / 3;
}
break;
case red :
if (millis() - timer >= pausa /3) {
state = turn_sec_yellow ;
- timer = millis();
+ timer += pausa /3 ;
}
break;
case sec_yellow :
if (millis() - timer >= pausa / 3) {
state = turn_green ;
- timer = millis();
+ timer += pausa /3;
}
break;
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;