Menu
CoddyTech
flag Ar iconالعربيةdown icon

الاختيار باستخدام 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.

challenge icon

التحدي

سهل

حوِّل المقبض إلى أداة لاختيار الألوان باستخدام 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 هنا
  }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس التوقيت دون delay

تدرّب بنفسك: Playground لـ Arduino