#10Principiante

Led bruciato con pulsante (On Off)

4.8(100)
157 completato
Led bruciato con pulsante (On Off)
Un progetto di commutazione che cambia lo stato del LED (acceso/spento) a ogni pressione del pulsante. Insegna la logica della variabile di stato e del debounce.

Video

Schema circuito

Led bruciato con pulsante (On Off) - Circuit

Codice sorgente

Arduino (C++)
1int ledState = 0;
2
3void setup() {
4  pinMode(13, INPUT);
5  pinMode(7, OUTPUT);
6}
7
8void loop() {  
9  if (digitalRead(13) == 1) {
10    ledState = !ledState;
11    digitalWrite(7, ledState);
12    delay(300);
13  }   
14}

FAQ

Che cos’è il debounce e perché è necessario?▾

Quando si preme un pulsante meccanico, questo si apre e si chiude più volte nell'arco di pochi millisecondi (rimbalzo). Arduino potrebbe interpretare questo fenomeno come una serie di pressioni successive e il LED rimarrebbe in uno stato casuale. Il debounce ignora questi rimbalzi attendendo un breve intervallo (ad es. 50 ms) dopo il cambio di stato.

A volte il LED non cambia o cambia due volte: perché?▾

In genere il debounce manca o è troppo breve. Inoltre, è necessario rilevare solo il momento in cui il pulsante viene "premuto" (stato precedente LOW, nuovo stato HIGH); se lo stato viene modificato ad ogni ciclo fintanto che il pulsante rimane premuto, il LED continuerà a lampeggiare in modo casuale.

A cosa serve la variabile di stato?▾

Memorizza se il LED è acceso o spento. Ad ogni pressione valida, la variabile viene invertita (ledStato = !ledStato) e il LED viene impostato in base a questo valore.

Posso controllare LED diversi utilizzando più pulsanti?▾

Sì, basta che tu mantenga per ogni pulsante un pin separato, uno stato precedente separato e una variabile separata per lo stato del LED. Se utilizzerai molti pulsanti, sarà più ordinato usare array e un codice di debounce basato su millis().

Led bruciato con pulsante (On Off) | BlueGrays