Arduino Mikrocontroller Tutorials - Input/Output

Taster entprellen

Schaltplan Taster

Taster haben eine Eigenschaft die man prellen nennt. Beim drücken oder loslassen des Tasters wird der Kontakt nicht sofort geändert. Es kommt zu unklaren Schaltzuständen, die der µC aufgrund seiner schnellen Abfrage als mehrfache Schaltvorgänge erkennen kann.
Softwareseitig kann man das prellen abfangen (entprellen). Dies funktioniert, in dem man den Taster zweimal hintereinander mit einer Pause dazwischen (20-100ms) abfragt. Zusätzlich ergänzt man das Programm noch um eine Schleife, die solange wartet, bis der Schalter wieder losgelassen wird.

Schaltung und Programmcode

// globale Variable für den LED Status (an/aus) bool ledStatus = false; void setup() { // Arduino Anschlüsse konfigurieren pinMode(2, INPUT_PULLUP); pinMode(7, OUTPUT); } void loop() { // Tastereingang abfragen if (digitalRead(2) == LOW) { // 50ms warten delay(50); // Eingang erneut abfragen if (digitalRead(2) == LOW) { // warten bis die Taste wieder losgelassen wird do { /*nichts tun*/ } while (digitalRead(2) == LOW); // nach dem loslassen wird der LED Status geändert ledStatus = !ledStatus; } // entsprechend des LED Status wird die LED an- oder ausgeschaltet if (ledStatus == true) { digitalWrite(7, HIGH); } else { digitalWrite(7, LOW); } } }