Usare un pulsante per controllare un Led

 

Per evitare il ” Bouncing ” sono state sviluppate molte tecniche, ma in questo semplice codice ho notato che normalmente basta aggiungere un ritardo di 10/50 millisecondi quando il codice rileva una transizione.

 

Codice ( Sketch ) per l’accesione del Led

 

Esempio: Accende il Led quando è premuto il pulsante e lo mantiene acceso dopo che lo si rilascia includendo un semplice antirimbalzo ( de-bouncing ).

{codecitation class=”brush:cpp”}

#define Led  13   // Il Pin del Led
#define Pulsante 7  // Il Pin di Input dove è collegato il pulsante
int Valore = 0;      // Valore servirà per conservare lo stato del Pin di Input
int Vecchio_Valore = 0;  // Questa variabile conserva il valore precedente di "Valore"
int Stato = 0;    // 0 = Led spento e 1 = Led acceso 

void setup()
{
pinMode(Led, OUTPUT); // Indica ad Arduino che Led è un Output
pinMode(Pulsante, INPUT); // e che Pulsante è un Input
}
void loop()
{
Valore = digitalRead(Pulsante); // Legge il valore dell’Input e lo conserva

if ((Valore == HIGH) && (Vecchio_Valore == LOW)) // Controlla se è avvenuta una transizione
{
Stato = 1 – Stato;
delay(10);
}

Vecchio_Valore = Valore; // Memorizza il valore precedente di Valore

if (Stato == 1)
{
digitalWrite(Led, HIGH); // Accende il Led
}
else
{
digitalWrite(Led, LOW);
}
}

{/codecitation}

Share This