Debounce
Debounce
Die Integration einer Debounce Funktion verhindert, dass ein Tastendruck falsch eingelesen wird. Ohne eine Debounce Funktion kann es passieren, dass mehrere Tastendrücke eingelesen werden, obwohl die Taster nur einmal gedrückt wurde. Dies passiert, weil beim eigentlichen Druckpunkt die Kontakte des Tasters so nah zusammen liegen, dass bereits Strom fliessen kann.
Verhindern kann man ein 'Bouncen' des Tasters durch 1.Das Nutzen der Pullup Widerstände und 2.Durch die Integration einer Software-seitigen Debounce Funktion.
// DEBOUNCE
// Embodied Interaction Basics
// Moritz Kemper, IAD Physical Computing Lab
// ZHdK, 07/11/2011
#define LED_PIN 13 // Define the Pins
#define BUTTON_PIN 6
int buttonState = 0;
int lastButtonState = 0;
long lastDebounceTime = 0;
long debounceDelay = 50;
void setup()
{
pinMode(LED_PIN, OUTPUT); // Declare the Pin as Output
pinMode(BUTTON_PIN, INPUT); // Declare the Pin as Input
digitalWrite(BUTTON_PIN, HIGH); // Enable Internal Pullup Resistor
}
void loop()
{
int reading = digitalRead(BUTTON_PIN); // Read the Digital Port
if(reading != lastButtonState)
{
lastDebounceTime = millis(); // Get the current time
}
if((millis() - lastDebounceTime) > debounceDelay) // Relate to last time
{
buttonState = reading;
}
if(buttonState == LOW)
{
digitalWrite(LED_PIN, HIGH);
}
else
{
digitalWrite(LED_PIN, LOW);
}
lastButtonState = reading;
}
Links
Debounce auf arduino.cc
millis() auf arduino.cc