Arduino & IoT Academy · درس

لماذا تحجب delay() كل شيء

شاهد كيف يمنع التوقف لوحتك من الاستجابة.

الدرس 2 من 413 خطوة

لماذا تحجب delay() كل شيء درس مجاني في Arduino & IoT Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Arduino & IoT Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Arduino & IoT Academy 4 دروس في المجموع.

الإيقاف المؤقت السهل

توقف دالة delay برنامجك مؤقتًا لعدد محدد من المللي ثانية. وهذه أبسط طريقة لإبطاء الأشياء وجعل الوميض مرئيًا.

delay(1000);

ماذا يعني 1000

ينتظر delay(1000) ثانية كاملة، لأن القيمة بوحدة المللي ثانية. لذلك يمثّل delay(500) نصف ثانية، وdelay(2000) ثانيتين.

إنها تجمّد اللوحة

المشكلة هي أن delay يجمّد كل شيء. أثناء الانتظار لا تنفّذ لوحتك أي مهمة أخرى إطلاقًا، مثل شخص يحبس أنفاسه. 😮

ضغطات الأزرار الفائتة

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

رؤية المشكلة

يوجد هنا delay مدته ثانية واحدة بين عمليتي الفحص، لذلك يضيع أي ضغط يحدث خلال هذه الثانية كاملة قبل إجراء القراءة التالية.

digitalRead(buttonPin);
delay(1000);

مهمة واحدة فقط في كل مرة

بما أن delay يحجب التنفيذ، فلا يمكنك تشغيل وإطفاء مصباح LED ومراقبة مستشعر في الوقت نفسه. ينتظر البرنامج بأكمله باعتباره مهمة واحدة.

تراكم فترات التأخير

تُضاف عمليتا delay المتتاليتان ببساطة إلى بعضهما. وإذا وزّعت عدة عمليات منها في البرنامج، فستقضي لوحتك معظم وقتها متجمّدة وغير مستجيبة.

مناسب للبرامج البسيطة

ليست delay أمرًا سيئًا. فإذا كان لديك مصباح LED يومض وحده دون أي مهام أخرى، فسيكون استخدامها واضحًا ومناسبًا تمامًا.

الهدف الحقيقي

الهدف الحقيقي هو إنشاء برنامج غير حاجب يستمر في الاستجابة أثناء توقيته للأحداث. وهذا يعني عدم تجميد الحلقة أبدًا بفترة انتظار طويلة.

فكّر في الوقت بدلًا من ذلك

بدلًا من التوقف، يمكنك معرفة مقدار الوقت الذي مضى، وتنفيذ الإجراء فقط بعد مرور وقت كافٍ. وفي أثناء ذلك تستمر الحلقة في العمل.

أداة أفضل قادمة

ستتعرّف قريبًا على millis، وهي ساعة تتيح لك قياس الوقت المنقضي دون تجميد البرنامج. بهذه الطريقة تحافظ المشاريع الحقيقية على استجابتها.

تحقّق سريع

ما العيب الرئيسي في استخدام delay داخل البرنامج؟

مراجعة

رأيت أن delay بسيطة، لكنها تجمّد اللوحة، فتفقد المدخلات وتحجب المهام الأخرى. بعد ذلك ستتعلّم توقيت الأحداث دون إيقاف الحلقة. ✨

البدء مجانًا

تعلم C++ مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
30
الدروس
120

الأسئلة الشائعة

هل درس «لماذا تحجب delay() كل شيء» مجاني؟

نعم — نص درس «لماذا تحجب delay() كل شيء» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Arduino & IoT Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Arduino & IoT Academy 4 دروس في المجموع.

ماذا ستتعلم في «لماذا تحجب delay() كل شيء»؟

شاهد كيف يمنع التوقف لوحتك من الاستجابة. تتمرن على Arduino & IoT Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Arduino & IoT Academy؟

لا تُشترط خبرة سابقة. Arduino & IoT Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «لماذا تحجب delay() كل شيء»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Arduino & IoT Academy هذا؟

نعم. كل درس في Arduino & IoT Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. int وfloat وbool على Arduino
  2. لماذا تحجب delay() كل شيء
  3. الوميض دون delay باستخدام millis
  4. تشغيل مهمتين في الوقت نفسه
← العودة إلى Arduino & IoT Academy