Tasten-Entprellung mit Bibliothek „ezButton“

Mechanische Tasten, Schalter, Relaiskontakte usw. prellen immer beim Öffnen und Schließen. Wenn damit eine LED, ein Relais oder ähnlich träge Lasten geschaltet werden, fällt dies zunächst nicht auf. Erst bei elektronischen Elementen wie Zähler u. ä. ist (mit einem Oszilloskop) zu sehen, dass beim Schalten nicht ein sondere mehrere kurze Impulse nacheinander erfolgen und das Ergebnis verfälschen.

Es gibt mehrere Methoden zum Entprellen, welche für Einsteiger u. U. nicht sofort zu durchschauen sind. Hier verwenden wir die Bibliothek „ezButton.h“, welche den Aufwand zum Entprellen deutlich vereinfacht.

Ein einfacher Sketch (Programm) zum Entprellen von einer Taste, wobei die Wirkungsweise über den seriellen Monitor der Arduino-Software überprüft wird:

/*
   Created by ArduinoGetStarted.com
   This example code is in the public domain
   Tutorial page: https://arduinogetstarted.com/tutorials/arduino-button-debounce
   Bearbeitet: Hans M. Herbrand
*/

#include <ezButton.h> // Bibliothek

ezButton button(6);  // Taste wird an Pin 6 angeschlossen und schaltet den Eingang an Masse

void setup() {
  Serial.begin(9600);
  button.setDebounceTime(50); // Verzögerungszeit 50 Millisekunden
}

void loop() {
  button.loop(); // Zeile muss vor der nachfolgenden Funktion in loop stehen

  if (button.isPressed()) {
    Serial.println("Taste wurde gedrückt");
  }
    if (button.isReleased()) {
      Serial.println("Taste wurde losgelassen");
  }
}

 

Darstellung im seriellen Monitor:

20:04:34.989 -> Taste wurde gedrückt
20:04:35.317 -> Taste wurde losgelassen
20:04:36.960 -> Taste wurde gedrückt
20:04:37.194 -> Taste wurde losgelassen
20:04:37.520 -> Taste wurde gedrückt
20:04:37.706 -> Taste wurde losgelassen
20:04:38.693 -> Taste wurde gedrückt
20:04:39.022 -> Taste wurde losgelassen
20:04:39.779 -> Taste wurde gedrückt
20:04:40.060 -> Taste wurde losgelassen
20:04:41.185 -> Taste wurde gedrückt
20:04:41.420 -> Taste wurde losgelassen

Weitere Beispiele und die Verwendung mehrerer Taste sind unter dem nachfolgenden Link (in Englisch) beschrieben: