كود البحث

الدرس 98-8: المشي الخفيف مع زر الضغط ومصابيح LED باستخدام الأردوينو

الدرس 98-8: المشي الخفيف مع زر الضغط ومصابيح LED باستخدام الأردوينو

يوضح لك هذا المشروع كيفية بناء "ضوء متحرك" يتقدم خطوة واحدة في كل مرة تضغط فيها على زر ضغط. فبدلاً من ضوء يعمل بمؤقت خاص به، تحصل على تحكم مباشر وملموس: كل ضغطة تنقل مؤشر LED المضيء موضعًا واحدًا إلى الأمام، وبعد آخر مؤشر LED يعود إلى الأول. يُعد هذا أحد أكثر اللبنات الأساسية فائدة في تعلم الأردوينو، لأنه يعلّمك كيفية الجمع بين مدخل رقمي (الزر) وآلة حالة دوّارة (أي مؤشر LED مضيء حاليًا) — وهو نمط ستستخدمه باستمرار.

5 leds on breadboard with push button shown connected to Arduino UNO
5 مؤشرات LED على لوحة التجارب مع زر ضغط موصولة بـ Arduino UNO

بمجرد أن تفهم هذا النمط، ستشغّل المنطق نفسه مجموعة واسعة من المشاريع الحقيقية. إليك بعض الأفكار العملية التي يمكنك بناؤها به:

  • محدد قوائم في جهاز حيث تُبرز كل ضغطة الخيار التالي.
  • مؤشر خطوات تسلسلي لآلة أو عملية (الخطوة 1، الخطوة 2، الخطوة 3...).
  • عرض نتيجة أو مستوى تتقدم فيه يدويًا بزر.
  • مؤشر "القناة التالية" أو "الوضع التالي" لوحدة تحكم في الإضاءة.
  • لعبة بسيطة أو جرس اختبار يتناوب فيه اللاعبون على إضاءة المصباح التالي.
  • مُرتّب مرحّلات أو أحمال حيث تُفعّل كل ضغطة الخرج التالي بالترتيب.

الميزة الأساسية مقارنة بالضوء المتسلسل التلقائي هي التحكم: لا شيء يحدث حتى تضغط، لذا لا يتقدم الضوء إلا عندما تقرر أنت ذلك. يلاحظ الفيديو أيضًا أن فكرة التبديل والتسلسل نفسها يمكن أن تشغّل مرحّلًا لتبديل ضوء تيار متردد أو التحكم في محرك، وليس فقط مؤشرات LED (في الفيديو عند 19:52).

العتاد والمكونات

قائمة الأجزاء قصيرة وغير مكلفة:

  • لوحة أردوينو (Uno أو Nano أو Mega أو أي لوحة متوافقة).
  • خمسة مؤشرات LED — 5 مم أو 3 مم، بأي ألوان تريدها.
  • خمس مقاومات محددة للتيار، من 200 Ω إلى 1000 Ω (يستخدم الفيديو 1 كيلو Ω).
  • مفتاح زر ضغط واحد (مفتاح لمسي لحظي مثالي).
  • لوحة تجارب وبعض أسلاك التوصيل DuPont.

ملاحظة سريعة عن مؤشرات LED: الكاثود هو الطرف الأقصر والجانب ذو الحافة المسطحة، بينما الأنود هو الطرف الأطول (في الفيديو عند 03:13). قيمة المقاومة ليست حرجة — فالمقاومة الأعلى تجعل مؤشر LED أخفت فقط، لذا أي قيمة من حوالي 300 Ω حتى 1000 Ω ستعمل بشكل جيد (في الفيديو عند 05:33).

دليل التوصيل

Schematic for Arduino walking light LEDs
المخطط التخطيطي لمؤشرات LED للضوء المتحرك على الأردوينو
wiring for Arduino walking light LEDs with push button
توصيل مؤشرات LED للضوء المتحرك على الأردوينو مع زر ضغط

التوصيل هو أساسًا نفس توصيل ضوء متحرك قياسي بخمسة مؤشرات LED، مع إضافة زر ضغط واحد. يتصل أنود كل مؤشر LED بمنفذ الأردوينو الخاص به، ويتصل كل كاثود عبر مقاومته الخاصة بقضيب الأرضي المشترك على لوحة التجارب. في هذا البناء، تُوصَّل مؤشرات LED بالمنافذ 3 و4 و5 و6 و7 (في الفيديو عند 31:37). يُوضع زر الضغط على لوحة التجارب بحيث يتصل أحد طرفيه بالأرضي والطرف الآخر بالمنفذ 2 — وهو نفس المنفذ الذي يستخدمه الكود للزر (في الفيديو عند 37:04).

ولأن الكود يفعّل مقاومة السحب الداخلية في الأردوينو، فلا حاجة إلى مقاومة خارجية على الزر. عندما لا يكون الزر مضغوطًا يقرأ المنفذ HIGH، وعندما تضغطه يُسحب المنفذ إلى الأرضي ويقرأ LOW (في الفيديو عند 14:02).

شرح الكود

البرنامج الكامل متاح أسفل هذا المقال. هنا نركز على الأجزاء التي سترغب فعليًا في تغييرها.

في أعلى Sketch، يُسنَد كل مؤشر LED والزر إلى منفذ. هنا تخصص البناء ليتوافق مع توصيلك الخاص:

const int pushButtonPin = 2; // push button pin
const int LED1 = 3;
const int LED2 = 4;
const int LED3 = 5;
const int LED4 = 6;
const int LED5 = 7;

int LED_ON = LED1; // which LED is currently lit

متغير LED_ON هو قلب المشروع. فهو يتذكر أي مؤشر LED مضيء حاليًا، بدءًا من LED1. في كل مرة تضغط الزر، يقدّم الكود LED_ON إلى مؤشر LED التالي في التسلسل ويطفئ السابق، بحيث لا يضيء إلا مؤشر LED واحد في أي وقت.

هناك أيضًا تأخير صغير بعد كل ضغطة:

delay(200); // debounce / give the user time between presses

تمنع هذه الوقفة البالغة 200 مللي ثانية تسجيل ضغطة فيزيائية واحدة كضغطات متعددة. إذا اهتز إصبعك أو بدا الزر حساسًا جدًا، فزد هذا الرقم؛ وإذا أردت استجابة أسرع، فخفّضه. انتبه إلى أن ضبطه منخفضًا جدًا قد يجعل الضوء يتخطى إلى الأمام بشكل غير متوقع (في الفيديو عند 41:20).

المنطق الرئيسي موجود في loop(). يقرأ الزر، وفقط عند الضغط على الزر (قراءة LOW) يقدم الضوء. تستخدم التسلسلة سلسلة من فحوصات if / else if للانتقال من LED1 إلى LED2 إلى LED3، وهكذا، مع العودة إلى LED1 بعد الأخير. إذا كنت تريد تغيير الاتجاه أو ترتيب مصابيح LED، فهذه هي الكتلة التي يجب تعديلها — ببساطة أعد تعيين أي دبوس يتبع أي دبوس.

المشروع المباشر والعرض التوضيحي

بعد رفع الكود، يؤدي الضغط على الزر إلى إضاءة أول LED؛ ويؤدي تحريره إلى إبقاء ذلك LED مضاءً. تنقل الضغطة التالية الضوء إلى LED الثاني، ثم الثالث والرابع والخامس، وتعود الضغطة التالية إلى الأول — دوران مستمر (في الفيديو عند 40:22).

من الآثار الجانبية الجميلة لتأخير 200 مللي ثانية أنه إذا أبقيت الزر مضغوطًا، يستمر الضوء في التقدم من تلقاء نفسه كل 200 مللي ثانية، مما يحول المشروع فعليًا إلى ضوء متحرك تلقائي أثناء الضغط على الزر (في الفيديو عند 42:07). حرر الزر ويتوقف عند LED الحالي. يمنحك هذا كلاً من التقدم اليدوي والتشغيل بدون استخدام اليدين من زر واحد.

إذا كنت تفضل تشغيل الضوء تلقائيًا دون أي زر على الإطلاق، فهذا بناء منفصل. النسخة التلقائية مشمولة في الدرس 98-7: الضوء المتحرك باستخدام الأردوينو و5 مصابيح LED.

مشاريع ذات صلة من هذا الفيديو

الفصول

  • [00:00] نظرة عامة على 10 مشاريع LED بالأردوينو
  • [01:22] مقدمة إلى دورة الأردوينو خطوة بخطوة
  • [02:29] فهم مصابيح LED: الرموز والقطبية والدبابيس
  • [03:49] حساب مقاومة تحديد تيار LED
  • [30:47] الضوء المتحرك مع 5 مصابيح LED: التوصيلات والمبدأ
  • [32:52] كود الضوء المتحرك: الدبابيس والتوقيت والحلقة
  • [36:41] تقديم الضوء باستخدام زر ضغط
  • [37:44] الضوء المتحرك مع زر ضغط: شرح الكود
  • [40:22] العرض التوضيحي وضبط تأخير الضغط
  • [57:16] ملاحظات ختامية وخاتمة الدورة

الصور

wiring for Arduino walking light LEDs with push button
wiring for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
5 مصابيح LED على لوحة توصيل مع زر ضغط موصل بـ Arduino UNO
5 مصابيح LED على لوحة توصيل مع زر ضغط موصل بـ Arduino UNO
940-Lessson 98-LED-8: Arduino code walking LED light with push button
اللغة: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

الأشياء التي قد تحتاجها

ملفات📁

مكتبات أردوينو (ملف مضغوط)

دليل المستخدم