Im Tutorial über die Taster habe ich schon über das prellen eines Tasters geschrieben. Es gibt in Ardublock zwei Blöcke mit denen man Tasterdrücke ohne Delay zählen kann. Diese beiden Blöcke können für Taster oder für alles andere das ein HIGH oder LOW Signal ausgeben kann verwendet werden. Das können Joysticks, Schalter, Lichtschranken usw. sein.
Mit dem Block "count change state on" werden die Tasterdrücke gezählt und mit dem Block "reset count change state of" wird dieser Zähler zurück gesetzt.
Tastendrücke ohne "delay" zählen
Da der "count change state on" Block Tastendrücke oder besser gesagt die Änderung am PIN zählt braucht es eine Variable die die Zahlen speichert. Der "count change state on" Block kann in einer integer oder integer long Variable unter dem Variablen Namen eingefügt werden. Nun wird jeder Tastendruck an dem angegebenen Pin gezählt und in der Variablen gespeichert.
Für diese Zählung braucht es keine delay Blöcke. Natürlich können auch mehrer Taster durch diese Blöcke abgefragt werden. Es braucht nur mehrer Variablen dazu.
Ardublock reset chang count state
Damit dieser Block auch genutzt werden kann muss der Zähler ab und zu mal auf 0 gesetzt werden können. Das geht nicht indem die Variable auf 0 gesetzt wird. Sondern nur über den eigenen reset Block. Die Variable die der Tastenblock verwendet kann auch nicht über die Variable verändert werden.
Taster ohne delay entprellen und LED schalten
Mit diesen beiden Blöcken kann man nun Taster ganz leicht entprellen bzw. die Taster verwenden ohne ein entprellen zu programmieren.
Im Beispiel unten habe ich genau das getan. Bei jedem Druck auf den Taster zählt die Variable um eine stellen hoch. Und zwar wird wirklich nur gezählt wenn der Taster los gelassen und erneut gedrückt wurde.
Damit das ganze funktioniert wird bei jedem zweiten drücken die Variable über den Block auf 0 zurück gesetzt. Bei einer 1 die LED eingeschaltet und bei einer 2 die LED ausgeschaltet. Das ganze könnte man nun mit beliebigen Zahlen weiterführen.
Wird das Beispiel hochgeladen geht die LED an, wenn der Taster gedrückt wird und die LED geht aus wenn der Taster erneut gedrückt wird. Ohne delay ohne ein weiteres abfragen von anderen Blöcken.
Dieses beiden Blöcke kann man überall verwenden. Zum Beispiel für einen Rundenzähler mit einem Reedkontakt. Egal überall da wo einer der Digital PINs als Eingang verwendet wird, lässt sich dieser Zähler als Entprellten Eingang verwenden.