#define P_LED1 11
#define P_LED2 12
#define P_LED3 13
#define P_TASTO 8
#define INTERVALLO 200
int stato = 0;
unsigned long tmrStato = 0;
void setup() {
pinMode(P_LED1,OUTPUT);
pinMode(P_LED2,OUTPUT);
pinMode(P_LED3,OUTPUT);
pinMode(P_TASTO, INPUT);
tmrStato = millis();
}
void loop() {
if (digitalRead(P_TASTO) == LOW) {
delay(50); // minimo debounce
while (digitalRead(P_TASTO) == LOW)
delay(50); // attendi che venga rilasciato il tasto
}
ciclo();
}
void ciclo() {
if (millis() - tmrStato >= INTERVALLO) {
tmrStato = millis();
switch (stato) {
case 0:
digitalWrite(P_LED1, HIGH);
stato = 1;
break;
case 1:
digitalWrite(P_LED1, LOW);
stato = 2;
break;
case 2:
digitalWrite(P_LED2, HIGH);
stato = 3;
break;
case 3:
digitalWrite(P_LED2, LOW);
stato = 4;
break;
case 4:
digitalWrite(P_LED3, HIGH);
stato = 5;
break;
case 5:
digitalWrite(P_LED3, LOW);
stato = 0;
break;
}
}
}