Buona sera a tutti, sto provando ad utilizzare la funzione switch case. Ho utilizzato una serie di if come antirimbalzo e poi la struttura case per accendere dei led diversi in base allo stato. il problema è che appena passo dallo stato 0 allo stato 1 i led cominciano come a “vibrare”, cioè lampeggiano molto velocemente, e poi se mollo il pulsante si accende un led a caso. qualcuno riesce a trovare l’errore? grazie mille
int Mode = 0;
int buttonState;
// Avvio dell'applicazione
void setup()
{
pinMode(LED1, OUTPUT); // imposta il pin digitale come output
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(val2, INPUT);
pinMode(val, INPUT);
digitalWrite(BUTTON, HIGH);
}
// Avvio del loop
void loop()
{
val = digitalRead(32);
delay(10);
val2 = digitalRead(32);
if (val == val2)
{
if (val != buttonState)
{
if (val == LOW)
{
sw1 = 1;
}
else
{
sw1 = 0;
}
}
}
switch (Mode) {
case 0:
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
if (sw1 == 1) Mode = 1;
break;
case 1: // controlla se il pulsante è stato premuto una volt
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
if (sw1 == 1) Mode = 2;
break;
case 2: // controlla se il pulsante è stato premuto due volte
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
if (sw1 == 1) Mode = 3;
break;
case 3: // controlla se il pulsante è stato premuto tre volte
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, HIGH);
if (sw1 == 1) Mode = 0;
break;
}
buttonState = val;
}
sketch_may25b.ino (1.75 KB)