1
0
mirror of https://github.com/arduino/Arduino.git synced 2025-02-21 15:54:39 +01:00

Fix Debounce example to work as described

This alters the debounce example code to toggle the LED rather than just use
the button state to set the LED state.

Fixes #293
This commit is contained in:
Mike 2012-12-28 20:16:42 +00:00
parent bd4f20ed0a
commit b7da415d6f

View File

@ -19,6 +19,8 @@
by David A. Mellis by David A. Mellis
modified 30 Aug 2011 modified 30 Aug 2011
by Limor Fried by Limor Fried
modified 28 Dec 2012
by Mike Walters
This example code is in the public domain. This example code is in the public domain.
@ -43,6 +45,9 @@ long debounceDelay = 50; // the debounce time; increase if the output flicker
void setup() { void setup() {
pinMode(buttonPin, INPUT); pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT); pinMode(ledPin, OUTPUT);
// set initial LED state
digitalWrite(ledPin, ledState);
} }
void loop() { void loop() {
@ -62,12 +67,21 @@ void loop() {
if ((millis() - lastDebounceTime) > debounceDelay) { if ((millis() - lastDebounceTime) > debounceDelay) {
// whatever the reading is at, it's been there for longer // whatever the reading is at, it's been there for longer
// than the debounce delay, so take it as the actual current state: // than the debounce delay, so take it as the actual current state:
buttonState = reading;
// if the button state has changed:
if (reading != buttonState) {
buttonState = reading;
// only toggle the LED if the new button state is HIGH
if (buttonState == HIGH) {
ledState = !ledState;
// set the LED:
digitalWrite(ledPin, ledState);
}
}
} }
// set the LED using the state of the button:
digitalWrite(ledPin, buttonState);
// save the reading. Next time through the loop, // save the reading. Next time through the loop,
// it'll be the lastButtonState: // it'll be the lastButtonState:
lastButtonState = reading; lastButtonState = reading;