Ein Licht mit Zeitschaltuhr
Teil des Abschnitts Timing ohne Delay der Arduino-Journey von Coddy. Lektion 6 von 18.
Eine Treppenhausbeleuchtung geht an, wenn du ihren Knopf drückst, und kurz darauf von selbst wieder aus. Drückst du erneut, während sie eingeschaltet ist, beginnt die Zeit von vorn.
Dafür brauchst du zwei Dinge: den Zeitpunkt des letzten Drückens und die Information, ob das Licht eingeschaltet ist. Speichere den Zeitpunkt in einem unsigned long, wenn der Knopf gedrückt ist:
if (digitalRead(buttonPin) == LOW) {
pressedAt = millis(); // die Zeit starten (oder erneut starten)
lightOn = true;
digitalWrite(ledPin, HIGH);
}Prüfe dann in jedem Schleifendurchlauf, wie viel Zeit vergangen ist:
if (lightOn && millis() - pressedAt >= onTime) {
lightOn = false;
digitalWrite(ledPin, LOW);
}Die beiden Teile warten nie, sodass ein Drücken jederzeit erkannt wird, auch wenn das Licht bereits eingeschaltet ist. Mit delay(2000) nach dem Drücken würde ein zweites Drücken während der Wartezeit verloren gehen.
Aufgabe
EinfachBaue eine Treppenbeleuchtung:
- Ein Tastendruck schaltet die LED an Pin 13 sofort ein
- 2 Sekunden nach dem Tastendruck schaltet sie sich von selbst aus
- Ein Tastendruck, während sie eingeschaltet ist, startet die 2 Sekunden erneut
Drücke Run, betätige die Taste einige Male und klicke dann auf Check.
Probier es selbst
const int ledPin = 13;
const int buttonPin = 2;
const unsigned long onTime = 2000; // wie lange das Licht eingeschaltet bleibt
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
}
void loop() {
// wenn die Taste gedrückt ist: die LED einschalten und sich den Zeitpunkt merken
// wenn seitdem onTime vergangen ist: die LED ausschalten
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Timing ohne Delay
1millis()
Die millis()-UhrZeitwerte in unsigned longBlinken ohne VerzögerungZwei LEDs, zwei GeschwindigkeitenBlinken, während ein Taster umschaltetEin Licht mit ZeitschaltuhrÜbe selbstständig: Arduino-Playground