Blinken, während ein Taster umschaltet
Teil des Abschnitts Timing ohne Delay der Arduino-Journey von Coddy. Lektion 5 von 18.
Eine Skizze, die nie wartet, kann gleichzeitig eine Taste überwachen und ein Blinken ausführen. Jede Schleife dauert nur wenige Mikrosekunden, sodass das Board die Taste tausende Male pro Sekunde abfragt und selbst einen sehr kurzen Tastendruck erkennt.
Das Blinken folgt dem millis()-Muster. Die Taste wird mit der Flankenerkennung aus dem Abschnitt Inputs abgefragt: Handle, wenn die Taste jetzt gedrückt ist und in der vorherigen Schleife nicht gedrückt war. ! bedeutet „nicht“, also bedeutet !wasPressed „war nicht gedrückt“.
bool wasPressed = false;
void loop() {
// das Blinken: if (now - previous >= 500) { ... }
bool pressed = digitalRead(buttonPin) == LOW;
if (pressed && !wasPressed) {
// der Taster wurde gerade gedrückt
}
wasPressed = pressed;
}Füge beide Teile nacheinander in loop() ein und verwende in keinem von beiden delay(). Wenn das Blinken 500 ms warten würde, bliebe ein Tastendruck, der während der Wartezeit beginnt und endet, unbemerkt.
Aufgabe
MittelLass das Board zwei Dinge gleichzeitig tun:
- Die rote LED an Pin 13 schaltet alle 500 ms um, gesteuert mit
millis() - Jeder Tastendruck schaltet die gelbe LED an Pin 12 um: an, dann aus, dann wieder an
Ein kurzer Tastendruck muss jederzeit funktionieren, und wenn du die Taste gedrückt hältst, schaltet die gelbe LED nur einmal um. Drücke Run, tippe auf die Taste und drücke dann Check.
Probier es selbst
const int redLed = 13;
const int yellowLed = 12;
const int buttonPin = 2;
void setup() {
pinMode(redLed, OUTPUT);
pinMode(yellowLed, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
}
void loop() {
// 1. Schalte die rote LED alle 500 ms mit millis() um
// 2. Jeder Tastendruck schaltet die gelbe LED 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 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