Go Down

Topic: Comando per pulsante che... (Read 143 times) previous topic - next topic

ImDrake97

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:

nid69ita

#1
Dec 18, 2014, 05:41 pm Last Edit: Dec 18, 2014, 05:45 pm by 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 generali 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à ???!?
my name is IGOR, not AIGOR

ImDrake97

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 generali 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

nid69ita

No, non voglio !!!  :smiley-evil:


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. 
my name is IGOR, not AIGOR

ImDrake97

No, non voglio !!!  :smiley-evil:


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);
  }
}
"

stefa24

ci sono molti errori:

questo non si può fare
Quote
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
https://sites.google.com/site/agritronica/
https://sites.google.com/site/t3chconcrete/
https://www.youtube.com/channel/UCnY1DNrSywgadjyqqtbvyew
arduino UNO rev 3
ide 1.6.0

PaoloP

#6
Dec 19, 2014, 10:19 am Last Edit: Dec 19, 2014, 10:20 am by PaoloP
Guarda l'esempio dell'IDE http://arduino.cc/en/Tutorial/ButtonStateChange

Al posto di
Code: [Select]
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

Go Up