Bei jedem Drücken umschalten
Teil des Abschnitts Eingaben der Arduino-Journey von Coddy. Lektion 4 von 22.
Bisher hat die LED den Taster nachgeahmt: an, solange er gedrückt wird, aus, wenn er losgelassen wird. Ein Lichtschalter funktioniert anders: Einmal drücken, um das Licht einzuschalten, erneut drücken, um es auszuschalten. Das ist ein Umschalten.
Zum Umschalten muss das Sketch den Moment erkennen, in dem der Taster gedrückt wird: jetzt gedrückt, aber beim letzten Aufruf von loop() noch nicht gedrückt. Dieser Moment wird als Flanke bezeichnet. Speichere den letzten Messwert in einer Variable oberhalb von setup(), wie bei einem Zähler:
int lastReading = HIGH;
void loop() {
int reading = digitalRead(2);
if (reading == LOW && lastReading == HIGH) {
// der Taster wurde gedrückt
}
lastReading = reading;
}Wenn du den Taster gedrückt hältst, bleibt der Messwert LOW, sodass die Flanke pro Tastendruck nur einmal auftritt, egal wie lange du ihn gedrückt hältst.
Um einen bool umzuschalten, verwende !, was „nicht“ bedeutet: ledOn = !ledOn; ändert true in false und umgekehrt.
Aufgabe
MittelDer Taster ist an Pin 2 (INPUT_PULLUP) und die LED an Pin 13 angeschlossen. Lass jeden Tastendruck die LED umschalten:
- wenn der Taster gedrückt wird (
LOWjetzt,HIGHbeim letzten Mal), ändereledOn - speichere die Messung am Ende von
loop()inlastReading - schalte die LED passend zu
ledOnein oder aus
Drücke auf Run, drücke einige Male den Taster und klicke dann auf Check.
Probier es selbst
const int buttonPin = 2;
const int ledPin = 13;
bool ledOn = false;
int lastReading = HIGH;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
}
void loop() {
int reading = digitalRead(buttonPin);
// Schalte ledOn um, wenn die Taste gedrückt wird
// Merke dir diesen Messwert für das nächste Mal
// Schalte die LED entsprechend ledOn ein oder aus
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Eingaben
1Taster
Den Zustand eines Tasters ausgebenPull-Down-WiderstandDer interne Pull-UpBei jedem Drücken umschaltenTastendrücke zählenEinen Taster entprellenZwei Taster gleichzeitigÜbe selbstständig: Arduino-Playground