Arduino – Funzione antirimbalzo (debouncing)

Debouncing per filtrare i microrimbalzi (funzione antirimbalzo)

La soluzione risiede nella seguente funzione, il cui scopo è effettuare il debouncing sugli ingressi a cui sono collegati pulsanti o altri contatti meccanici, restituendo quindi lo stato dell’ingresso solo dopo che questo è rimasto stabile per un certo intervallo di tempo. Questo è definito in millisecondi dalla variabile debounceDelay, dove 20ms è un intervallo maggiore della durata di un singolo microrimbalzo e quindi è più che sufficiente.
Questa funzione va dichiarata all’inizio del listato insieme alle altre variabili:

Per impiegarla è sufficiente utilizzare l’istruzione debounce(pin) in sostituzione all’istruzione digitalRead(pin).

Ecco quindi come è stato risolto il problema sul listato precedente. In questo caso quando viene premuto il pulsante viene atteso che lo stato dell’ingresso risulti stabile per almeno 20ms, quindi lo stato viene restituito stabile filtrando il segnale “sporco”.

Nel video seguente si può notare il corretto funzionamento del circuito.

22,402 total views, 3 views today