Mit switch auswählen
Teil des Abschnitts Timing ohne Delay der Arduino-Journey von Coddy. Lektion 8 von 18.
Wenn eine Variable mehrere Werte haben kann und für jeden Wert ein eigener Code benötigt wird, wird eine Kette aus if und else if lang. switch erledigt dieselbe Aufgabe und liest sich wie eine Liste:
switch (zone) {
case 0:
// wird ausgeführt, wenn zone 0 ist
break;
case 1:
// wird ausgeführt, wenn zone 1 ist
break;
default:
// wird ausgeführt, wenn kein case zutrifft (optional)
break;
}switch springt zu dem case, dessen Zahl übereinstimmt, und führt die darunterstehenden Zeilen aus. break verlässt das switch. Vergisst du ein break, fährt das Board auch mit den Zeilen des nächsten Falls fort. Das nennt man Durchfallen.
Hier ist der Drehknopf in vier Zonen unterteilt. analogRead() liefert einen Wert von 0 bis 1023, und geteilt durch 256 ergibt das eine ganze Zahl: 0 für das untere Viertel, dann 1, 2 und 3 ganz oben. Jede Zone zeigt ihre eigene Farbe auf der RGB-LED an.
Aufgabe
EinfachVerwandle den Drehknopf mit switch in einen Farbwähler:
- Zone 0: Rot (bereits geschrieben)
- Zone 1: Grün
- Zone 2: Blau
- Zone 3: Weiß (alle drei eingeschaltet)
Verwende setColor() und beende jeden Fall mit break;. Drücke auf Run, drehe den Knopf und klicke dann auf Check.
Probier es selbst
const int redPin = 9;
const int greenPin = 10;
const int bluePin = 11;
void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void setColor(int red, int green, int blue) {
digitalWrite(redPin, red);
digitalWrite(greenPin, green);
digitalWrite(bluePin, blue);
}
void loop() {
int zone = analogRead(A0) / 256; // 0, 1, 2 oder 3
switch (zone) {
case 0:
setColor(HIGH, LOW, LOW); // rot
break;
// Füge hier die Zonen 1, 2 und 3 hinzu
}
}
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