
Video
Schema circuito

Codice sorgente
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().
