Menu
CoddyTech

Wybór za pomocą switch

Część sekcji Odmierzanie czasu bez delay() ścieżki Arduino w Coddy. Lekcja 8 z 18.

Gdy jedna zmienna może przyjmować kilka wartości, a każda wartość wymaga własnego kodu, łańcuch if i else if robi się długi. switch wykonuje to samo zadanie i przypomina listę:

switch (zone) {
  case 0:
    // wykonuje się, gdy zone ma wartość 0
    break;
  case 1:
    // wykonuje się, gdy zone ma wartość 1
    break;
  default:
    // wykonuje się, gdy nie pasuje żaden case (opcjonalne)
    break;
}

switch przechodzi do case, którego numer pasuje, i wykonuje znajdujące się pod nim wiersze. break opuszcza switch. Jeśli zapomnisz o break, płytka przejdzie również do wierszy następnego przypadku — nazywa się to falling through.

Tutaj pokrętło jest podzielone na cztery strefy. analogRead() zwraca wartość od 0 do 1023, a podzielenie jej przez 256 daje liczbę całkowitą: 0 dla dolnej ćwiartki, a następnie 1, 2 i 3 na samej górze. Każda strefa wyświetla własny kolor na diodzie RGB LED.

challenge icon

Wyzwanie

Łatwy

Zamień pokrętło w selektor kolorów za pomocą switch:

  • strefa 0: czerwony (już napisane)
  • strefa 1: zielony
  • strefa 2: niebieski
  • strefa 3: biały (wszystkie trzy włączone)

Użyj setColor() i zakończ każdy przypadek instrukcją break;. Naciśnij Run, obróć pokrętło, a następnie naciśnij Check.

Spróbuj swoich sił

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 lub 3

  switch (zone) {
    case 0:
      setColor(HIGH, LOW, LOW);   // czerwony
      break;
    // dodaj tutaj strefy 1, 2 i 3
  }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Odmierzanie czasu bez delay()

Poćwicz samodzielnie: Edytor online Arduino