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: