Go Down

Topic: Accendere led per 50 millisecondi con pressione pulsante (Read 631 times) previous topic - next topic

gianlu81

Ciao a tutti. E' tutto il pomeriggio che provo ma non riesco a venirne a capo.Il programma in questione dovrebbe,dopo la pressione del pulsante,accendere un led per 50 millisecondi. Il mio problema è il seguente:se mantengo premuto il pulsante il led rimane acceso.In pratica a me servirebbe un'impulso di 50 ms anche se il pulsante rimane premuto. Spero di essermi spiegato di seguito posto il file sorgente.
Code: [Select]
                 
int up = 8;
int down = 7;
int attup = 13;
int attdown = 12;
int pausa = 50;
int su = 0;
int giu = 0;

void setup() {
  pinMode(attup, OUTPUT);
  pinMode(attdown, OUTPUT );
  pinMode(up,    INPUT);
  pinMode(down, INPUT);
  }
 
void loop() {
 
  su = digitalRead(up);
  giu = digitalRead(down);
  if (su == HIGH) {
  digitalWrite(attup, HIGH);
  delay (pausa);
  digitalWrite(attup, LOW );
  }
  else {
  digitalWrite(attup, LOW);
  }
  if (giu == HIGH) {
  digitalWrite(attdown, HIGH);
  delay (pausa);
  digitalWrite(attdown, LOW ); 
  }
  else {
  digitalWrite(attdown, LOW);
  }
  }


Grazie anticipatamente a chi vorrà spiegarmi dov'è l'errore e indicarmi la soluzione.

leo72

Metti un ciclo while che attende finché il pulsante non viene rilasciato subito dopo l'attivazione del led.
Code: [Select]

if (su == HIGH) {
  digitalWrite(attup, HIGH);
  delay (pausa);
  digitalWrite(attup, LOW );
  while (digitalRead(up)) {}
}

In questo modo il ciclo si ripete finché la lettura è HIGH ed esce solo quando hai tolto il dito.

gianlu81

Grazie per la risposta veloce e per la spiegazione

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy