switch ile Seçim
Coddy'nin Arduino Journey'sinin delay() Kullanmadan Zamanlama bölümünün bir parçası. Ders 8 / 18.
Bir değişken birkaç farklı değere sahip olabiliyor ve her değer kendi kodunu gerektiriyorsa, if ve else if zinciri uzar. switch aynı işi yapar ve bir liste gibi okunur:
switch (zone) {
case 0:
// zone 0 olduğunda çalışır
break;
case 1:
// zone 1 olduğunda çalışır
break;
default:
// Hiçbir case eşleşmediğinde çalışır (isteğe bağlı)
break;
}switch, numarası eşleşen case etiketine atlar ve altındaki satırları çalıştırır. break, switch yapısından çıkar. Bir break yazmayı unutursan kart sonraki case'in satırlarına da geçmeye devam eder; buna falling through denir.
Burada düğme dört bölgeye ayrılmıştır. analogRead() 0 ile 1023 arasında bir değer verir ve 256'ya bölmek tam sayı verir: en alt çeyrek için 0, ardından üstte 1, 2 ve 3. Her bölge RGB LED'de kendine ait bir renk gösterir.
Görev
KolayDüğmeyi switch ile bir renk seçiciye dönüştür:
- bölge 0: kırmızı (zaten yazılmış)
- bölge 1: yeşil
- bölge 2: mavi
- bölge 3: beyaz (üçü de açık)
setColor() kullan ve her durumu break; ile bitir. Run'a bas, düğmeyi çevir, ardından Check'e bas.
Kendin dene
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 veya 3
switch (zone) {
case 0:
setColor(HIGH, LOW, LOW); // kırmızı
break;
// 1, 2 ve 3 bölgelerini buraya ekle
}
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
delay() Kullanmadan Zamanlama bölümündeki tüm dersler
Kendi başına pratik yap: Arduino playground