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

تذكّر الوضع

جزء من قسم التوقيت دون delay في رحلة Arduino على Coddy. الدرس 7 من 18.

تستمر ضغطة الزر لجزء من الثانية، لكن ما تبدأه قد يستمر مدة أطول بكثير. لكي يتابع البرنامج عمله بعد ترك الزر، يجب أن يتذكر ما يفعله. يُسمّى المتغير المخصّص لذلك حالة أو نمطًا:

int mode = 0;   // 0 = إيقاف، 1 = وميض

قسّم loop() إلى جزأين. أولًا، لا تغيّر المدخلات سوى النمط. ثم ينفّذ الجزء المتبقي من الحلقة ما يحدده النمط:

// 1. المدخلات تغيّر الوضع
if (digitalRead(blinkButton) == LOW) {
  mode = 1;
}

// 2. الوضع يحدّد ما يحدث
if (mode == 1) {
  // اجعل الضوء يومض باستخدام millis()
} else {
  digitalWrite(ledPin, LOW);
}

يمثّل كل رقم شيئًا واحدًا يمكن للبرنامج فعله. اكتب في تعليق ما يعنيه كل رقم. يمكن أن يحتوي البرنامج على أي عدد يحتاج إليه من الأنماط: 0 و1 و2 و3 والمزيد.

challenge icon

التحدي

سهل

الزر الأخضر موصول بالمنفذ 2، والأحمر بالمنفذ 3.

  • يضبط الزر الأخضر mode على 1، ويضبطه الزر الأحمر على 0
  • عندما تكون قيمة mode هي 1، يومض مؤشر LED على المنفذ 13 باستخدام millis()، لمدة 500 ms مضاءً و500 ms منطفئًا
  • عندما تكون قيمة mode هي 0، يكون مؤشر LED مطفأً

اضغط على Run، ثم اضغط على الزر الأخضر واتركه، ثم اضغط على الزر الأحمر. بعد ذلك اضغط على Check.

جرّب بنفسك

const int ledPin = 13;
const int blinkButton = 2;   // أخضر
const int offButton = 3;     // أحمر

int mode = 0;   // 0 = مطفأ، 1 = يومض

unsigned long previousMillis = 0;
int ledState = LOW;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(blinkButton, INPUT_PULLUP);
  pinMode(offButton, INPUT_PULLUP);
}

void loop() {
  // 1. الأزرار تغيّر mode فقط

  // 2. ثم نفّذ ما يحدده mode
}
quiz iconاختبر نفسك

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

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

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