Menu
CoddyTech

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.

challenge icon

Aufgabe

Einfach

Verwandle 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
  }
}
quiz iconTeste dich selbst

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

Übe selbstständig: Arduino-Playground