Comando per pulsante che...

Salve, uso arduino da poco e volevo sapere se potete dirmi come fare lo sketch di un pulsante che, detto in parole povere, se viene premuto una prima volta, svolge un'azione per esempio accende un led, poi, premuto una seconda volta ne svolge un'altra e premuto una terza volta ne svolge un'altra ancora... Spero che mi abbiate capito e spero che mi possiate aiutare, perchè mi serve urgentemente D:

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni e a leggere il regolamento: Regolamento - qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections - qui le pinout delle varie schede by xxxPighi: Pinout - qui una serie di link [u]generali[/u] utili: Link Utili

Usi una variabile di stato. Esempio int Stato=0; Al primo push diventa 1, al secondo push 2, al terzo push diventa 3. Poi a seconda del valore di Stato fai diverse cose (vedi istruzione switch )

E domanda... alla quarta pressione che deve fà ???!?

nid69ita: Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni e a leggere il regolamento: Regolamento - qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections - qui le pinout delle varie schede by xxxPighi: Pinout - qui una serie di link [u]generali[/u] utili: Link Utili

Usi una variabile di stato. Esempio int Stato=0; Al primo push diventa 1, al secondo push 2, al terzo push diventa 3. Poi a seconda del valore di Stato fai diverse cose (vedi istruzione switch )

E domanda... alla quarta pressione che deve fà ???!?

Ciao, ora mi presento :D Comunque faccio che alla quarta pressione si ferma tutto come potrei fare? In poche parole vorrei fare: Con tre LED inizialmente spenti. Prima pressione: Si accende e lampeggia un primo LED Seconda pressione:Si spegne il prima e Si accende e lampeggia un terzo LED Terza pressione: Si spegne il secondo e Si accende e lampeggia un terzo LED Quarta pressione: Si spegne il terzo LED Mi potresti aiutare facendo lo sketch? Se ovviamente vuoi ;) Anche se penso di aver capito più o meno... Grazie Mille :D

[u]No, non voglio[/u] !!! :smiling_imp:

Scherzo, non è che non voglio, secondo me è meglio se ci provi da solo, poi posti il codice se ci son problemi e correggiamo. :)

Però... alla 5° pressione? e alla 6° ??? riazzeriamo il tutto secondo me, Stato ridiventa 0 e si riparte come se non avessimo mai premuto nulla. Secondo me unica cosa logica da fare.

nid69ita: [u]No, non voglio[/u] !!! :smiling_imp:

Scherzo, non è che non voglio, secondo me è meglio se ci provi da solo, poi posti il codice se ci son problemi e correggiamo. :)

Però... alla 5° pressione? e alla 6° ??? riazzeriamo il tutto secondo me, Stato ridiventa 0 e si riparte come se non avessimo mai premuto nulla. Secondo me unica cosa logica da fare.

Sono riuscito ad arrivare fino a questo punto :( Non riesco a fare di meglio, so di aver sbagliato perchè non ho capito bene... please HELP me D:

" int StatoPulsante = 0; int StatoPulsante = 1; int StatoPulsante = 2; int StatoPulsante = 3;

void setup() { pinMode(2, INPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); }

void loop() { StatoPulsante = digitalRead(2);

if (StatoPulsante == 0) { digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); } if (StatoPulsante == 1) { digitalWrite(3, HIGH); digitalWrite(4, LOW); digitalWrite(5, LOW);

delay(250); }

if (StatoPulsante == 2) { digitalWrite(3, LOW); digitalWrite(4, HIGH); digitalWrite(5, LOW);

delay(250); }

if (StatoPulsante == 3) { digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, HIGH);

delay(250); } } "

ci sono molti errori:

questo non si può fare

int StatoPulsante = 0; int StatoPulsante = 1; int StatoPulsante = 2; int StatoPulsante = 3;

con un pulsante dovresti usare un sistema antidebounce per incrementare il valore della varialbile StatoPulsante usa StatoPulsante++, serve un IF{} che ti azzeri la variabile StatoPulsante, inoltre ptresti usare l'istruzione SWITCH{} viene una cosa più pulita

Guarda l'esempio dell'IDE http://arduino.cc/en/Tutorial/ButtonStateChange

Al posto di

if (buttonPushCounter % 4 == 0) {
    digitalWrite(ledPin, HIGH);
  } else {
   digitalWrite(ledPin, LOW);
  }

metti uno switch case con indice buttonPushCounter.

--> http://forum.arduino.cc/index.php?topic=207407.0