Den Modus merken
Teil des Abschnitts Timing ohne Delay der Arduino-Journey von Coddy. Lektion 7 von 18.
Ein Tastendruck dauert nur einen Sekundenbruchteil, aber was er startet, kann viel länger andauern. Damit das Programm weiterläuft, nachdem die Taste losgelassen wurde, muss sich der Sketch merken, was er gerade tut. Eine Variable dafür heißt Zustand oder Modus:
int mode = 0; // 0 = aus, 1 = blinkendTeile loop() in zwei Teile. Zuerst ändern nur die Eingaben den Modus. Dann macht der Rest der Schleife, was der Modus vorgibt:
// 1. Eingaben ändern den Modus
if (digitalRead(blinkButton) == LOW) {
mode = 1;
}
// 2. Der Modus bestimmt, was passiert
if (mode == 1) {
// mit millis() blinken
} else {
digitalWrite(ledPin, LOW);
}Jede Zahl steht für eine Sache, die der Sketch gerade tun kann. Schreibe in einem Kommentar auf, wofür jede Zahl steht. Ein Sketch kann so viele Modi haben, wie er braucht: 0, 1, 2, 3 und mehr.
Aufgabe
EinfachDer grüne Taster ist an Pin 2 und der rote an Pin 3 angeschlossen.
- Der grüne setzt
modeauf 1, der rote setzt ihn auf 0. - Wenn
mode1 ist, blinkt die LED an Pin 13 mitmillis(): 500 ms an und 500 ms aus. - Wenn
mode0 ist, ist die LED aus.
Drücke Run, drücke den grünen Taster, lass ihn los und drücke dann den roten. Dann Check.
Probier es selbst
const int ledPin = 13;
const int blinkButton = 2; // grün
const int offButton = 3; // rot
int mode = 0; // 0 = aus, 1 = blinkend
unsigned long previousMillis = 0;
int ledState = LOW;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(blinkButton, INPUT_PULLUP);
pinMode(offButton, INPUT_PULLUP);
}
void loop() {
// 1. die Tasten ändern nur den Modus
// 2. dann ausführen, was der Modus vorgibt
}
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
2Zustandsautomaten
Den Modus merkenMit switch auswählenBenannte Zustände mit enumZustandsautomat für eine AmpelModi mit einer Taste durchschaltenÜbe selbstständig: Arduino-Playground