debounce

salve, non capisco una parte del codice di debounce che da arduino tra gli esempi:

    if (reading != buttonState) {
      buttonState = reading;

      // only toggle the LED if the new button state is HIGH
      if (buttonState == HIGH) {
        ledState = !ledState;

e sopratutto non capisco il ruolo di "buttonState".

in teoria la seconda volta che si preme il bottone sia "reading" che "buttonState" saranno high e quindi il codice salta e va al prossimo che vale sempre e comunque

Mi sa che hai scordato che quando rilasci il pulsante buttonState torna a LOW
comunque per correttezza se vuoi che gli altri capiscano, sarebbe utile indicare tutto il loop() altrimenti resta difficile seguire la logica con 4 righe appese.

che poi sarebbe questo

Ti bastava mettere un semplice link

Quel pezzetino di codice non serve per il debounce ma per triggerare il momento di pressione del pulsante. Solo in questo modo si riesce a cambiare lo stato del LED senza che questo cambi finche il pulsante é premuto.

if (reading != buttonState) {
      buttonState = reading;

Riconosce sia il premere che il rilascio del pulsante.

if (buttonState == HIGH) {
        ledState = !ledState;

Ma lo stato del LED cambia solo nel cambio stato LOW-HIGH del pulsante.

Ciao Uwe

Il debounce dei pulsanti e' sempre meglio farlo hardware ... :wink: