Arduino Lektion 87: Taster entprellen

Wenn man einen Taster in seine Schaltung einbaut so wird man früher oder später darauf stoßen das dieser mehr als einmal ein Signal sendet. Dieses verhalten nennt man „prellen“.

Taster mit Pull Down Widerstand
Taster mit Pull Down Widerstand

Im Tutorial Arduino Lektion 33: Taster mit Pull Down Widerstand habe ich bereits erläutert wie man eine kleine Schaltung mit einem Taster und einen Pull Down Widerstand aufbaut. Jedoch hat diese Schaltung genau das beschriebene Problem, wenn man den Taster drückt und sofort wieder los läßt wird mehr als ein Signal gesendet.

Sketch – Taster mit Prellen

Video

Anzeigen

Lösung mit der Bounce2 Bibliothek

Hier hilft die Bounce2 Bibliothek weiter, diese Bibliothek enthält Funktionalitäten welche genau dieses „prellen“ von Tastern unterdrückt. (Wie man eine Bibliothek der Arduino IDE installiert habe ich bereits im Tutorial Arduino IDE, Einbinden einer Bibliothek ausführlich erläutert.)

Arduino IDE - Bounce2 Bibliothek
Arduino IDE – Bounce2 Bibliothek

Wenn die Bibliothek erfolgreich installiert wurde, dann muss diese über den Befehl „#include <Bounce2.h>“ dem Sketch hinzugefügt werden.

Zunächst einmal muss für jeden Button eine Instanz von „Bounce“ erzeugt werden. Im Konstruktor des Bounce Objektes wird der Pin an welchem der Taster angeschlossen ist und zusätzlich ein Wert für eine Pause (in Millisekunden)  übergeben.

In der Funktion „setup“ muss wie gehabt der pinMode für die Taster auf Input gesetzt werden.

Die Funktion „loop“ muss deutlich umgeschrieben werden, denn wir verwenden nun die Befehle und Funktionen von der Bounce2 Bibliothek.

Im ersten Schritt müssen wir den Taster aktualisieren.

Um danach zu prüfen ob der Taster gedrückt wurde.

Wenn man prüfen möchte ob der Taster wieder losgelassen wurde dann nutzt man die Funktion „rose“.

Hier nun der gesamte Sketch zum nachbauen und selber Testen.

Sketch – Taster ohne prellen

Video

Anzeigen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.