الاختيار باستخدام switch
جزء من قسم التوقيت دون delay في رحلة Arduino على Coddy. الدرس 8 من 18.
عندما يكون للمتغير الواحد عدة قيم وتحتاج كل قيمة إلى شيفرتها الخاصة، تطول سلسلة من if وelse if. تؤدي switch المهمة نفسها وتُقرأ كقائمة:
switch (zone) {
case 0:
// يُنفَّذ عندما تكون قيمة zone هي 0
break;
case 1:
// يُنفَّذ عندما تكون قيمة zone هي 1
break;
default:
// يُنفَّذ عندما لا تتطابق أي حالة (اختياري)
break;
}تقفز switch إلى case الذي يطابق رقمه، وتنفّذ الأسطر التي تليه. تُنهي break تنفيذ switch. إذا نسيت break، فستواصل اللوحة تنفيذ أسطر الحالة التالية أيضًا، وهذا ما يُسمّى الاستمرار إلى الحالة التالية.
هنا، يُقسَّم المقبض إلى أربع مناطق. تعطي analogRead() قيمة من 0 إلى 1023، وتعطي القسمة على 256 عددًا صحيحًا: 0 للربع السفلي، ثم 1 و2 و3 في الأعلى. تعرض كل منطقة لونها الخاص على مصباح RGB LED.
التحدي
سهلحوِّل المقبض إلى أداة لاختيار الألوان باستخدام switch:
- المنطقة 0: أحمر (مكتوب بالفعل)
- المنطقة 1: أخضر
- المنطقة 2: أزرق
- المنطقة 3: أبيض (الألوان الثلاثة مضاءة)
استخدم setColor() وأنهِ كل حالة بـ break;. اضغط على Run، وأدر المقبض، ثم اضغط على Check.
جرّب بنفسك
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 أو 3
switch (zone) {
case 0:
setColor(HIGH, LOW, LOW); // أحمر
break;
// أضف المناطق 1 و2 و3 هنا
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس التوقيت دون delay
تدرّب بنفسك: Playground لـ Arduino