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.
Wyzwanie
ŁatwyZamień 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
}
}
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()
1millis()
Zegar millis()Czas w typie unsigned longMiganie bez opóźnieniaDwie diody LED, dwa tempaMiganie podczas przełączania przyciskiemŚwiatło na czas4Precyzyjne odmierzanie czasu
Pomiar za pomocą micros()Gdy licznik millis() się przepełniaStoper z przyciskiem2Maszyny stanów
Zapamiętywanie trybuWybór za pomocą switchNazwane stany z enumMaszyna stanów sygnalizacji świetlnejPrzełączanie trybów przyciskiemPoćwicz samodzielnie: Edytor online Arduino