Wird ein Taster der an einen digitalen Eingang des Arduino angeschlossen ist gedrückt, gibt es mehr als nur einen Impuls am Eingang. Zum einen "prellt" der Taster und zum anderen ist die Abfrage des Tasters so schnell dass der Eingang schneller abgefragt wird als er wieder los gelassen werden kann. Um einen Taster vernünftig abzufragen braucht es also etwas mehr als nur den "Teste" und den "digital Read" Block.
Die einfachste Art einen Taster zu entprellen ist im Bild unten zu sehen. Nachdem der Arduino bzw. Ardublock das erste mal einen geschlossen Kontakt am Eingang abgefragt hat. Wartet das Programm über einen "Delay" Block 1 Sekunde, damit kann das Programm, A.: den Taster nicht mehr abfragen und B.: ist es egal wie oft und stark der Taster prellt, da es nicht mehr gemessen wird. So ist es sehr einfach einen Taster zu entprellen ABER es gibt auch einige Nachteile.
- Schnell Tastendrücke werden nicht gezählt. Man kann die Zeit zwar etwas heruntersetzen auf Ca. 500ms. aber dann wird auch schnell doppel gezählt.
- Bleibt man dauerhaft auf dem Taster, wird nach jeder Sekunde der Eingang neu Abgefragt.
- In der "Delay" Zeit kann der Arduino nicht anderes machen als "Warten"
Eine bessere Lösung aber auch etwas mehr Aufwand ist das entprellen wie es auf dem Bild unten zu sehen ist.
- Nachdem der Taster gedrückt wurde, wird eine Variable auf "TRUE" gesetzt. Nun weis die Software dass der Taster gedrückt wurde
- Über einen "solange" Block, wartet das Programm nun bis der Taster los gelassen wird
- Wird der Taster los gelassen, wird die Variable auf "FALSE" gesetzt und damit der "solange" aufgelöst
- Nun wird noch 1/10 Sekunde gewartet, falls der Taster beim loslassen noch prellen würde
Damit kann nun schnell gezählt werden und wenn der Taster gedrückt bleibt zählt trotzdem nur ein Druck. Einziger Nachteil, in der Zeit wo der Taster gedrückt gehalten wird, ist das Programm "solange" Block und kann nichts anderes machen.
Wer sich die Funktion im "Serial Monitor" mal anschauen möchte kann dieses Programm hier verwenden. Es wird eine Variable hoch gezählt und angezeigt.
Damit das entprellen im Programm nicht so viel Platz wegnimmt (zumindest optisch) kann der entprellte Taster in ein Unterprogramm gesetzt werden.