
Video
Schaltplan

Quellcode
1int ledState = 0;
2
3void setup() {
4 pinMode(13, INPUT);
5 pinMode(7, OUTPUT);
6}
7
8void loop() {
9 if (digitalRead(13) == 1) {
10 ledState = !ledState;
11 digitalWrite(7, ledState);
12 delay(300);
13 }
14}FAQ
Was ist Debounce und warum ist es notwendig?▾
Sobald der mechanische Taster gedrückt wird, schaltet er für einige Millisekunden mehrfach ein und aus (Prellverhalten). Der Arduino könnte dies als mehrere Tastenbetätigungen interpretieren, wodurch der Zustand der LED unvorhersehbar bleibt. Durch das Debounce-Verfahren werden diese Prellungen ignoriert, indem nach einem Zustandswechsel eine kurze Zeit (z. B. 50 ms) abgewartet wird.
Die LED wechselt manchmal nicht oder wechselt zweimal – warum?▾
In der Regel fehlt die Entprellung oder ist zu kurz. Außerdem muss nur der Moment erfasst werden, in dem die Taste „gedrückt“ wird (vorheriger Zustand LOW, neuer Zustand HIGH); wenn der Zustand in jedem Zyklus geändert wird, solange die Taste gedrückt gehalten wird, flackert die LED und bleibt zufällig leuchten.
Wozu dient die Statusvariable?▾
Es speichert, ob die LED ein- oder ausgeschaltet ist. Bei jedem gültigen Tastendruck wird die Variable invertiert (ledStatus = !ledStatus) und die LED entsprechend diesem Wert angesteuert.
Kann ich mit mehreren Tasten verschiedene LEDs steuern?▾
Ja, es reicht aus, wenn du für jede Taste einen eigenen Pin, einen eigenen Variablenwert für den vorherigen Zustand und einen eigenen Variablenwert für den LED-Zustand speicherst. Wenn du viele Tasten verwendest, lassen sich Arrays und ein auf `millis()` basierender Debounce-Code besser organisieren.
