Un pulsante in ingresso può comandare 2 o più uscite?

vorrei con un pulsante fare in questo modo: -pigiandolo la prima volta accendere il led sul pin 22 -pigiandolo la seconda volta spegnere il led sul pin 22 -pigiandolo la terza volta accendere il led sul pin 23 -pigiandolo la quarta volta spegnere il led sul pin 23.

Dopodichè ripartire dall'inizio. Grazie mille

Basta che incrementi una variabile e poi con uno switch..case controlli l'operazione da eseguire. Alla 5a pressione ripartire dall'inizio.

Devi fare il debouce del pulsante (basta un delay di 10mS dopo la sua lettura) e incrementare la variabile di stato solo al cambio di livello del pulsante. vedi http://danthompsonsblog.blogspot.it/2011/12/arduino-push-button-onoff-example.html Ciao Uwe

il mio esempio di programma con un pulsante ed un led:

int puls1A; //variabile per pulsante 1A int puls1AA; //variabile per pulsante 1A void setup() { Serial.begin(9600);

pinMode(22,INPUT); //pulsante 1A pinMode(38,OUTPUT); //uscita 1

}

void loop() {

puls1A=digitalRead(22); //pulsante 1A salotto ingresso if ((puls1A==HIGH) and (puls1AA==0)) //se premuto { digitalWrite(38,HIGH); //abilita uscita 1 pin18 puls1AA=1; Serial.println("ingresso 1 acceso"); //stampa su seriale delay(1000); } else if ((puls1A==HIGH) and (puls1AA==1)) { digitalWrite(38,LOW); puls1AA=0; Serial.println("ingresso 1 spenti"); delay(1000); } }

ho provato ad aggiungere uno stato ma non ne sono capace. Un ulteriore aiutino? Grazie ancora...

Te lo metto in pseudo codice, sta a te trasformarlo in codice Arduino:

byte contatore = 0

do
   if (pulsante premuto)
      contatore + 1
      if (contatore > MAX)
        contatore = 0
      end_if
      switch (contatore):
        case 0:
           .....
        case 1:
           ....
        case 2:
           ....
        ....
     end_switch
   end_if
loop

Essendo all’inizio e non conoscendo la programmazione in generale non riesco a capirci nulla…
a mente più lucida vedremo…

leo72:
Te lo metto in pseudo codice, sta a te trasformarlo in codice Arduino:

byte contatore = 0

do
   if (pulsante premuto)
      contatore + 1
      if (contatore > MAX)
        contatore = 0
      end_if
      switch (contatore):
        case 0:
           …
        case 1:
           …
        case 2:
           …
        …
     end_switch
   end_if
loop

79flavio79: Essendo all'inizio e non conoscendo la programmazione in generale non riesco a capirci nulla.... a mente più lucida vedremo...

dai non abbatterti: hai usato funzioni ben più complesse nel tuo programma: leggi riga per riga il codice di leo e scrivilo giù in C funzionante... funzionerà al primo colpo... in pratica l'algoritmo legge se il tasto è premuto, se il tasto è premuto incrementa uno stato (passa da uno stato al successivo). poi c'è uno switch/case o degli if che in base allo stato accenderanno una luce o l'altra luce...

proverò, grazie per l'incoraggiamento...

qsecofr:

79flavio79: Essendo all'inizio e non conoscendo la programmazione in generale non riesco a capirci nulla.... a mente più lucida vedremo...

dai non abbatterti: hai usato funzioni ben più complesse nel tuo programma: leggi riga per riga il codice di leo e scrivilo giù in C funzionante... funzionerà al primo colpo... in pratica l'algoritmo legge se il tasto è premuto, se il tasto è premuto incrementa uno stato (passa da uno stato al successivo). poi c'è uno switch/case o degli if che in base allo stato accenderanno una luce o l'altra luce...