Étape 2: Arduino bouton Debouncing
Continuez du bouton debouncing, que j’ai présenté dans mon dernier Instructable, nous pouvons utiliser millis() pour debounce boutons sans utiliser delay() :
Dans ce code, j’ai ajouté de nouvelles variables de stockage :
Boolean debouncedState = faible ;
int debounceInterval = 20 ;
unsigned long timeOfLastButtonEvent = 0 ;
debouncedState stocke l’état actuel de debounced du bouton, il s’agit de l’État, en que nous sommes absolument sûrs que le bouton est. En revanche, currentState et lastState mémorisez les résultats actuels et le derniers, que nous avons fait du bouton, mais ils ne nous dites pas l’état du bouton avec certitude parce qu’elles peuvent être affectées par le bouton chatter.
debounceInterval est la quantité de ms pour attendre que la goupille de bouton à régler avant que nous sachions avec certitude ce que c’est dans l’Etat. Je suis mon exemple dernier j’avais été en utilisant 1ms, ici j’utilise 20ms.
timeOfLastButtonEvent est similaire à timeOfLastLedEvent dans le dernier sketch, il donne un temps de comparer avec currentTime afin que nous pouvons compter le nombre de secondes s’est écoulées depuis la première détection d’un bouton.
Nous réinitialisons timeOfLastButtonEvent chaque fois currentState n’est pas égal à lastState :
Si (currentState! = lastState) {}
timeOfLastButtonEvent = currentTime ;
}
Une fois que suffisamment de temps écoulé sans avoir besoin de réinitialiser timeOfLastButtonEvent, nous savons que le bouton a réglé dans un État debounced :
currentTime - timeOfLastButtonEvent > debounceInterval
Alors nous pouvons mettre à jour l’état actuel du debounce stockée si elle a été modifiée et dans l’affirmative, déclencher un événement selon le nouvel État debounce :
Si (currentState! = debouncedState) {}
debouncedState = currentState ;
Si (debouncedState == HIGH) {}
Serial.println("Pressed") ;
} else {}
Serial.println("Released") ;
}
}