Taster entprellen
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);
}
}
}