Pages: [1]   Go Down
Author Topic: Accendere led per 50 millisecondi con pressione pulsante  (Read 548 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 1
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
                 
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.
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 331
Posts: 22785
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Metti un ciclo while che attende finché il pulsante non viene rilasciato subito dopo l'attivazione del led.
Code:
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.
Logged


Offline Offline
Newbie
*
Karma: 1
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie per la risposta veloce e per la spiegazione
Logged

Pages: [1]   Go Up
Jump to: