come risolvere??

selve a tutti;da poco mi sono cimentato nel mondo di arduino,e come tutto all inizio arrivano i problemi da risolvere..a voi chiedo unapiccola mano :il seguente programma spegne e accende due led (prima uno poi altro poi entrambi)premendo un pulsante di un radiocomando 4canali,vorrei che l ultimo skech (led ad intermittenza)vada sino a che io prema il pulsante del radiocomando quindi ritornando all inizio e via di seguito...come posso fare??grazie a tutti anticipatamente :slight_smile: :slight_smile: :slight_smile: :slight_smile:

int marco;
int lavatrice=0;
void setup(){
  pinMode(13,OUTPUT);
  pinMode(2,OUTPUT);
  pinMode(11,INPUT);  
  Serial.begin(9600);
}
  

void loop()     {
  marco=digitalRead(11);
  if ((marco==HIGH) and(lavatrice==0)) {
    digitalWrite(13,HIGH);
    Serial.println("LED ROSSO ACCESO");
    digitalWrite(2,LOW);
    Serial.println("LED VERDE SPENTO");
    lavatrice=1;
    delay(500);
    Serial.println("STOP");
  } 
  else if  ((marco==HIGH) and (lavatrice==1)){
    digitalWrite(13,LOW);
    Serial.println("LED ROSSO SPENTO");
    digitalWrite(2,HIGH);
    Serial.println("LED VERDE ACCESO");
    lavatrice=2;
    delay(500);
    Serial.println("STOP");
  }
  else if ((marco==HIGH) and (lavatrice==2)){
  digitalWrite(13,HIGH);
  Serial.println("LED ROSSO ACCESO");
  digitalWrite(2,HIGH);
  Serial.println("LED VERDE ACCESO");
      lavatrice=3;
      delay(500);
      Serial.println("STOP");
    }
    else if((marco==HIGH) and (lavatrice==3))
         {
      digitalWrite(13,HIGH);
      Serial.println("LED ROSSO ACCESSO");
      digitalWrite(2,LOW);
      Serial.println("LED VERDE SPENTO");
      delay(1000);
      digitalWrite(13,LOW);
      Serial.println("LED VERDE ACCESSO");
      digitalWrite(2,HIGH);
      Serial.println("LED ROSSO SPENTO");
  
      lavatrice=0;
      delay(500);
      Serial.println("");
      Serial.println("STOP");
      
    }
    
  }

Benvenuto. :slight_smile:
Ti invitiamo a presentarti qui: Re: Presentazioni nuovi iscritti, fatevi conoscere da tutti! (Part 1) - Generale - Arduino Forum
e a leggere il regolamento: [REGOLAMENTO] Come usare questa sezione del forum - Italiano - Arduino Forum

Il codice devi postarlo racchiudendolo negli appositi tag (delimitatori)
Vedi sezione 7 del regolamento, spiega bene come fare.

ciao
si puo risolvere con un'altra variabile e un altro if

solo che se schiacci il pulsante mentre sei nei "delay" dell'ultima parte potrebbe non funzionare.

Perché hai aperto 2 thread identici?
http://forum.arduino.cc/index.php?topic=235091.0

si si per sbaglio..nn sono riscito a eliminarlo...scusate :|.....camperos grazie per l'aiuto ma questo if dove come l 'ho devo impostare per far si che lo sketc vada all infinito fino a nuovo ordine??

Ho modificato leggermente il tuo sketch inserendo il blocco switch

int marco;
int lavatrice = 0;

void setup() {
  pinMode(13, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(11, INPUT);
  Serial.begin(9600);
}


void loop()     {
  marco = digitalRead(11);
  if (marco == HIGH) {
    delay(20);                                      // debounce
    switch (lavatrice) {
      case 0:
        digitalWrite(13, HIGH);
        Serial.println("LED ROSSO ACCESO");
        digitalWrite(2, LOW);
        Serial.println("LED VERDE SPENTO");
        lavatrice = 1;
        delay(500);
        Serial.println("STOP");
        break;

      case 1:
        digitalWrite(13, LOW);
        Serial.println("LED ROSSO SPENTO");
        digitalWrite(2, HIGH);
        Serial.println("LED VERDE ACCESO");
        lavatrice = 2;
        delay(500);
        Serial.println("STOP");
        break;

      case  2:
        digitalWrite(13, HIGH);
        Serial.println("LED ROSSO ACCESO");
        digitalWrite(2, HIGH);
        Serial.println("LED VERDE ACCESO");
        lavatrice = 3;
        delay(500);
        Serial.println("STOP");
        break;

      case 3:
        digitalWrite(13, HIGH);
        Serial.println("LED ROSSO ACCESSO");
        digitalWrite(2, LOW);
        Serial.println("LED VERDE SPENTO");
        delay(1000);
        digitalWrite(13, LOW);
        Serial.println("LED VERDE ACCESSO");
        digitalWrite(2, HIGH);
        Serial.println("LED ROSSO SPENTO");
        lavatrice = 0;
        delay(500);
        Serial.println("");
        Serial.println("STOP");
        break;

      default:
        break;
    }
  }
}// end loop

Lo switch case permette di selezionare uno dei casi in base alla variabile di controllo, nel tuo caso lavatrice.
Ora devi solamente cambiare il modo di gestire la variabile lavatrice in modo che cambi ogni volta che premi il pulsante e non in base ai casi precedenti.

Se hai difficoltà chiedi. :wink:
Buona domenica.

so già che poi mi dici che funziona 1 volta si e 8 no
nella parte che vuoi fare continuare fino a nuovo ordine ci sono

1.5 secondi che il pulsante non puo funzionare
100 millisecondi circa che puo funzionare,
certo puoi guardare il led e premere al momento giusto :stuck_out_tongue_closed_eyes:

per quanto riguarda a cio che vuoi fare senza stravolgere il tuo sketch devi

esempio non completo:

int vaiSempre = 0;

-----------  
  else if((marco==HIGH) and (lavatrice==3)and(vaiSempre==0)
         {
vaiSempre = 1;
}
if (vaiSempre==1 && marco==LOW){

//tuo sketch
}
//poi devi farlo tornare vaiSempre a 0 alla prossima pigiata di pulsante,

edit:
Paolo in contemporanea, c'ho messo 20 minuti a scrivere e non avevo visto la tua risposta :roll_eyes: