kk logo

In diesem Beitrag soll es im allgemeinen um Taster gehen, an den digitalen Eingängen des Arduino können zwar auch viele andere Bauteile angeschlossen werden. In diesem Beitrag geht es aber um die Taster. Bevor wir uns genauer mit den Tastern beschäftigen können. Müssen wir uns erst um das "leidige" Thema des entprellens von Tastern kümmern. Da die Eingänge des Arduino so flink sind, erkenne sie bei jedem Drücken des Tasters nicht nur einen Tasterdruck, sondern ganz viele. Das liegt in der Bauart der Taster, diese Schalten einfach nicht schnell und sauber genug.

 

Auf dieser Seite behandle ich den Block "count state" mit dem sich Eingänge auch ohne delay entprellen lassen.


Mit dem kleinen Code unten können wir das sehr gut deutlich machen. Lädt man den Code auf den Arduino, öffnet den Serial Monitor und drückt den Taster, zählt die Variable egal wie kurz der Taster gedrückt wird sehr viele Impulse.

0 taster turorial arduino ardublock prellen

 

Für machen Anwendungen mag das egal sei, wenn man mit dem Taster einfach eine LED einschalten möchte, dann ist das "prellen" des Tasters egal. Da nach dem einschalten der LED der Taster nicht mehr benötigt wird. 

1 digital.input taster ardublock

 

Möchte man die LED mit einem anderen Taster wieder ausschalten geht das nicht so einfach. Wenn man den Code unten auf den Arduino lädt, wird man feststellen, dass die LED in einem undefinierten Zustand ist oder einfach willkürlich an und aus geht. 

2 ardublock taster digital eingaenge

Taster und digitale Eingänge mit Ardublock entprellen

Damit die Taster vom Programm korrekt erkannt werden, müssen sie entprellt werden. Dazu gibt es verschiedene Möglichkeiten in Ardublock. Die einfachste und schnellte Art einen Taster zu entprellen ist ein "DELAY" Block nach dem Taster zu setzen. Damit wird der Taster nach dem ersten Impuls am Eingang einfach für eine eingestellt Zeit nicht mehr abgefragt. Es haben sich Zeiten zwischen 500 und 1500ms als praktisch erwiesen. 

3 digital input taster ardublock

 

Mit dem Code unten lässt sich die LED nun mit zwei verschiedenen Tastern ein und ausschalten. Bleibt man allerdings länger als eine Sekunde auf dem Taster, dann wechselt die LED ihren Zustand. Drückt man den Taster ein zweites mal dann erkennt das Programm den Tastendruck nicht. Aber für einfache Anwendungen ist dies die eine gute Wahl Taster zu entprellen.

4 ardublock taster led schalten tutorial

Eine bessere Möglichkeit die Taster zu verwenden ist eine "und" Bedingung zu verwenden. Egal wie lange man nun auf dem Taster bleibt die LED wechselt den ihren Zustand nicht. Da jeweils die nur die Bedingung mit dem Taster aber nicht die zweite mit der digitalen Variablen erfüll ist. So kann man die LED ein und aus Schalten ohne dass es zu einem Blinken kommt. 

4.1 digitale variable taster entprellen ardublock arduino

 

LED mit einem Taster schalten

Möchte man mit einem Taster eine LED oder einen Motor ein und ausschalten, muss der Zustand vor dem letzen Tasterdruck gespeichert werden. Das geht recht einfach, mit einer digitalen Variablen. Bei jedem drücken des Tasters wird diese entweder auf HIGH oder auf LOW gesetzt. In dem "FALLS" Block wird zudem noch eine "und" Bedingungen hinzugefügt. Nun muss der Taster gedrückt werden und zudem die passende Variable an sein, damit die LED ihren Zustand ändert. Das entprellen geschieht wieder über die delay Zeit. Bei diesem Code würde die LED aber wenn man auf dem Taster bleibt, auch wieder das blinken anfangen. 

5 led mit.einem taster einschalten ausschalten ardublock

 

Besser ist es diesen Code zu verwenden. Durch den Block "only_every" und den Block "solange" Kann die LED nicht das blinken anfangen. Nachteil dieser Art zu entprellen ist dass, das schalten erst nach dem los lassen des Tasters erfolgt. Wenn ich den Taster 3 Minuten gedrückt halte, dann schaltet die LED erst nach 3 Minuten ein. Aber in aller Regel macht man das ja nicht. Durch diese Schaltung ist sichergestellt, dass die LED nur bzw. erst den Betriebszustand ändert, wenn der Taster los gelassen wird. Eine Mehrfachzählung ist nicht möglich.

Wäre nur der "solange" Block im Programm würde das Prellen trotzdem mehrere Impulse verursachen. Durch den "only_every" Block wird die Änderung aber erst nach einer Zeit abgefragt. Theoretisch funktioniert das auch ohne den "only_every" Block aber damit ist man auf der sicheren Seite.

5.1 ardublock only every taster entprellen funktion ohne delay

 

 Mehrer LEDs mit einem Taster schalten

 Möchte man mehrer LEDs ein und ausschalten, reicht eine digitale Variable nicht mehr, da diese nur zwei Zustände kennt. Nun braucht es eine analoge Variable, die zählt wie oft der Taster gedrückt wurde. Nach dem hochzählen kommen dann die abfrage Blöcke mit der (=) Bedingung. Ist die Variable = 1 oder =2 usw. Dann werden die LEDs geschaltet. In dem Code unten wird beim fünften drücken alle LEDs ausgeschaltet, die Variable zurückgesetzt und damit kann das einschalten von vorne beginnen. So kann man Tastendrücke Zählen.  

6 mehrer leds mit mit einem schalten ardublock

 

King of my heart

Let the King of my heart
Be the mountain where I run
The fountain I drink from
Oh, He is my song

Ronnie

schwäbischer tüftler und bastler, kraftsportler, ADHS power, 43 Jahre, 1 Frau, 5 Kinder und 1003 Ideen. 

ronnie berzins at mee