الوميض دون delay باستخدام millis
تتبّع الوقت المنقضي لتشغيل المهام وفق جدول زمني.
الوميض دون delay باستخدام millis درس مجاني في Arduino & IoT Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Arduino & IoT Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Arduino & IoT Academy 4 دروس في المجموع.
ساعة إيقاف مضمّنة
تعيد الدالة millis عدد المللي ثانية التي ظلّت فيها لوحتك قيد التشغيل منذ تشغيلها. إنها ساعة إيقاف مجانية تستمر في العد دائمًا. ⏱️
unsigned long now = millis();لماذا unsigned long
خزّن قيمة millis في متغير من النوع unsigned long. فالعدد يكبر كثيرًا مع مرور الوقت، بينما سيتجاوز متغير int عادي الحدّ المسموح به خلال أقل من دقيقة.
الفكرة الأساسية
بدلًا من التوقف، تتذكر آخر وقت نفّذت فيه إجراءً، ثم تواصل في كل دورة فحص مقدار الوقت الذي مرّ منذ ذلك الحين.
تذكّر اللحظة الأخيرة
احتفظ بمتغير مثل previousMillis لتخزين وقت آخر تغيير لحالة مصباح LED. وستقارنه بالوقت الحالي في كل دورة.
unsigned long previousMillis = 0;حدّد الفاصل الزمني
اختر فاصلًا زمنيًا، مثل 1000 مللي ثانية، ليكون المدة بين الومضات. ولا يؤدّي الإجراء إلا بعد مرور هذه المدة، مما يمنحك إيقاعًا ثابتًا.
const long interval = 1000;هل مرّ وقت كافٍ؟
في كل دورة، اطرح previousMillis من قيمة millis الحالية. فإذا كان الفارق مساويًا للفاصل الزمني أو أكبر منه، فقد حان وقت تنفيذ الإجراء.
if (millis() - previousMillis >= interval) {أعد ضبط المؤقت
بمجرد تنفيذ الإجراء، اضبط previousMillis على الوقت الحالي. ويعيد ذلك بدء العد التنازلي، بحيث تنتظر الومضة التالية فاصلًا زمنيًا كاملًا من جديد.
previousMillis = millis();بدّل حالة مصباح LED
داخل الكتلة المؤقتة، ما عليك إلا تبديل حالة مصباح LED، فتشغّله إذا كان مطفأً وتطفئه إذا كان مشغّلًا، لتحصل على وميض منتظم.
ledState = !ledState;
digitalWrite(ledPin, ledState);الحلقة لا تتوقف أبدًا
بين الومضات، تستمر الحلقة في العمل بأقصى سرعة، ويمكنها قراءة المستشعرات أو الأزرار. ولا يتجمّد أي شيء أثناء الانتظار.
الطرح يعالج تجاوز الحد
بعد نحو 49 يومًا، تعود قيمة millis إلى الصفر، لكن حيلة الطرح تظل تعطي الفارق الصحيح، لذلك يستمر التوقيت في العمل.
نمط قابل لإعادة الاستخدام
يعمل نمط millis هذا مع أي مهمة متكررة، وليس مع الوميض فقط. غيّر الفاصل الزمني والإجراء، ويمكنك جدولة أي شيء.
تحقّق سريع
لماذا نخزّن نتيجة millis في متغير من النوع unsigned long؟
مراجعة
تعلّمت نمط millis: تذكّر وقت التنفيذ الأخير، وافحص الفاصل المنقضي، ثم نفّذ الإجراء وأعد الضبط. والآن يومض مصباح لوحتك مع بقائها متيقظة تمامًا. 🎉
الأسئلة الشائعة
هل درس «الوميض دون delay باستخدام millis» مجاني؟
نعم — نص درس «الوميض دون delay باستخدام millis» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Arduino & IoT Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Arduino & IoT Academy 4 دروس في المجموع.
ماذا ستتعلم في «الوميض دون delay باستخدام millis»؟
تتبّع الوقت المنقضي لتشغيل المهام وفق جدول زمني. تتمرن على Arduino & IoT Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Arduino & IoT Academy؟
لا تُشترط خبرة سابقة. Arduino & IoT Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «الوميض دون delay باستخدام millis»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Arduino & IoT Academy هذا؟
نعم. كل درس في Arduino & IoT Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- int وfloat وbool على Arduino
- لماذا تحجب delay() كل شيء
- الوميض دون delay باستخدام millis
- تشغيل مهمتين في الوقت نفسه