come uscire dai stati del pulsante

Ho fatto cosi:

int ledpin1=2;
int buttonpin1=4;
int buttonstatus1;
int previous_buttonstatus1=LOW;
int status1 = 0;
String MessageLed1;
String MessageButton1;
void setup()
{
   pinMode(ledpin1, OUTPUT);
   pinMode(buttonpin1 , INPUT);
   digitalWrite(ledpin1, LOW);
   Serial.begin(9600);
}
void loop()
{
   buttonstatus1 = digitalRead(buttonpin1);   
   if (buttonstatus1 == HIGH && previous_buttonstatus1 == LOW) { 
      status1++;
      status1 = status1 % 3;   
      previous_buttonstatus1 = HIGH;                                     
   }
   else if (buttonstatus1 == LOW)
      previous_buttonstatus1 = LOW;   
   
  if (status1==0){
    digitalWrite(ledpin1, LOW);
    MessageLed1 = "OFF";
    MessageButton1 = "0";
  }
  else if (status1 == 1){
     digitalWrite(ledpin1, HIGH);
     MessageLed1 = "ON";
     MessageButton1 = "1";
  }
  else if (status1 == 2){
      MessageLed1 = "BLINK";
      MessageButton1 = 2;
     digitalWrite(ledpin1, HIGH);
     delay(2000);
     digitalWrite(ledpin1, LOW);
     delay(2000);
  }
 Serial.print("B1="); Serial.print(MessageButton1);
 Serial.print("L1="); Serial.print(MessageLed1);
 Serial.println();
}

tramite esempi .. perché trai i libri che ho non spiegano nulla come fare.. spiegano solo come accendere un led e pulsante etc.. cose che so già fare.

Mi dite come posso far uscire dallo stato 2 visto che il led fa il blink ?

Ed come esco ad ritornare ad 0 senza uscire dal programma?
Grazie mille e aspetto risposte e buona serata.

Per ritornare allo stato 0 dallo stato 2 basta mettere

    status1 = 0;

dopo le istruzioni

     .  .  .
     digitalWrite(ledpin1, HIGH);
     delay(2000);
     digitalWrite(ledpin1, LOW);
     delay(2000);

che quindi diventano:

     .  .  .
     digitalWrite(ledpin1, HIGH);
     delay(2000);
     digitalWrite(ledpin1, LOW);
     delay(2000);
    status1 = 0;

Ciao,
P.

In realtà dovrebbe essere sufficiente premere il pulsante. Solo che con 4 secondi di delay diventa difficile premerlo nel momento giusto.
Fai come dice pgiagno e forzi l'uscita dopo il primo lampeggio.

fratt:
Fai come dice pgiagno e forzi l'uscita dopo il primo lampeggio.

Ma ci sono sempre i due delay da 2 secondo l'uno...

Devee vitare i delay e gestire il tutto con millis().

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.