Willkommen auf unserem Seminar-Blog

Immer auf dem aktuellen Stand bleiben

Dieser Seminar-Blog befindet sich noch im Aufbau und wird in den kommenden Tagen entsprechend verfeinert.

Member Login

Lost your password?

Registration is closed

Sorry, you are not allowed to register by yourself on this site!

You must either be invited by one of our team member or request an invitation by email at viad.info {at} zhdk {dot} ch.

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