اذهب إلى المحتوى

مشروع التحكم بتشغيل وإطفاء ليد LED باستخدام لوحة أردوينو


Mohammad Baher Karazeh

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

فكرة المشروع

تعتمد فكرة المشروع على توصيل ليد LED على إحدى الأقطاب الرقمية Digital Pins في لوحة أردوينو أونو Arduino Uno، والتحكم في طريقة عمله، يُضبط القطب كقطب خرج OUTPUT، ثم يُشغل الليد لمدة ثانية واحدة وبعدها يوقف لمدة ثانية أخرى وتتكرر هذه العملية باستمرار. يمكن ربط هذه الفكرة بمثال بسيط لا بد أنك رأيته سابقًا في مكان ما، فهو يستخدم في الساعات الرقمية، إذ يوجد فيها شريحتان من الليدات تفصل بين أرقام الثواني والدقائق والساعات، وتومض بشكل متكرر كل ثانية.

صورة توضيحية عن الساعات الرقمية

العناصر المستخدمة

سنحتاج مجموعة من العناصر الضرورية لعمل هذا المشروع، وهي:

  • لوحة أردوينو أونو Arduino Uno.
  • كابل البرمجة USB Cable.
  • لوحة توصيل التجارب Breadboard.
  • ليد LED.
  • مقاومة بقيمة 220 أوم.
  • مجموعة أسلاك توصيل من نوع male to male.

ما هي لوحة التجارب Breadboard

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

تتصل الثقوب متصلة ببعضها بشكل رأسي في المسارات الجانبية على الأطراف وتوصل عليها أقطاب التغذية غالبًا، لذلك يوجد مساران في كل طرف: الأول للقطب الموجب والآخر للقطب السالب. أما باقي الثقوب فتكون متصلة ببعضها بشكل أفقي وتُستخدم لإدخال العناصر الإلكترونية وتوصيلها ببعضها البعض، كما يوجد فراغ في المنتصف يقسم اللوحة إلى قسمين متناظرين ويسمح بتركيب الدوائر المتكاملة integrated circuit.

صورة توضيحية لمسارات لوحة توصيل التجارب breadboard

مخطط توصيل المشروع Circuit Diagram

سنوضح طريقة توصيل المشروع من خلال مجموعة من النصائح والخطوات البسيطة التي ستساعدك بإنجاز مشروعك بطريقة سهلة، اتبع الخطوات الآتية لتوصيل المشروع:

  • صل أقطاب التغذية دائمًا بلوحة التجارب أولًا، فسوف تساعدك هذه الخطوة كثيرًا في أي مشروع، ويمكنك الحصول على التغذية من أقطاب الطاقة Power Pins في لوحة الأردوينو التي تحدثنا عنها في المقال السابق، صل القطب 5v مع المسرى الموجب للوحة التجارب والقطب GND مع المسرى السالب للوحة التجارب من خلال الأسلاك.
  • صل الرِّجل الأطول للِّيد (التي تمثل الطرف الموجب) مع القطب رقم 13 في لوحة الأردوينو أونو Arduino Uno.
  • صل الرِّجل الثانية للِّيد (التي تمثل الطرف السالب) مع الرجل الأولى للمقاومة (لا توجد قطبية للمقاومة، لذلك لا يوجد فرق إذا عكسنا بين الرجل الأولى والرجل الثانية).
  • صل الرِّجل الأخرى للمقاومة مع المسرى السالب في لوحة التجارب. توضح الصورة التالية مخطط التوصيل:

001_مخطط توصيل المشروع الأول.JPG

الكود البرمجي للتحكم بتشغيل وإطفاء ليد LED

يجب أن يحتوي أي كود بلغة الأردوينو على دالتين، الأولى()void setup ينفذ ما بداخلها مرة واحدة فقط عند بداية التشغيل وسنسميها الدالة الرئيسية لسهولة الشرح، وبعدها ينتقل لتنفيذ ما بداخل الدالة الثانية ()void loop بشكل متكرر، وسنسميها الدالة التكرارية.

void setup() {
}

void loop() {
}

تُضبط الأقطاب والطرفيات الخاصة بلوحة الأردوينو في الدالة الرئيسية، ففي مثالنا هذا سنضبط القطب رقم 13 على أنه قطب خرج OUTPUT من خلال الدالة المدمجة ()pinMode التي تأخذ معاملين: الأول يمثل رقم القطب والثاني نوع القطب (خرج أو دخل) فتصبح الدالة الرئيسية بالشكل الآتي:

void setup () {
  pinMode(13, OUTPUT);
}

ملاحظة: توفر نواة أردوينو Arduino core مجموعة من الدوال المدمجة التي تتميز بأنها سهلة الفهم والاستخدام مما يجعل عملية البرمجة وتطوير المشاريع الإلكترونية أبسط وأكثر كفاءة وفعالية في الكثير من الأوقات كما أنها توفر الوقت والجهد على المبرمجين بتجنب إعادة كتابة الأكواد الشائعة والمستخدمة بكثرة من خلال استخدام هذه الدوال المبنية مسبقًا، مما يساعدهم على التركيز للإبداع والابتكار. يمكنك الاستزادة أكثر والإطلاع على جميع التوابع المدمجة التي توفرها نواة أردوينو من خلال زيارة توثيق أردوينو على موسوعة حسوب، أو الاطلاع على المرجع الرسمي Arduino Reference.

وبما أننا نريد تشغيل وإطفاء الليد بشكل متكرر ومستمر لذلك سنكتب أمر التشغيل والإطفاء في الدالة()loop ونتحكم بالتشغيل والإطفاء من خلال الدالة ()digitalWrite التي تأخذ أيضًا معاملين: يمثل المعامل الأول رقم القطب، ويمثل الثاني حالة القطب (إما قيمة 1 منطقي HIGH، أو قيمة 0 منطقي LOW)

void loop() {
  digitalWrite(13, HIGH);
  digitalWrite(13, LOW);
}

ولكن عند تجربة هذا الكود نجد أن الليد لا يومض بل يعمل بشكل مستمر، والسبب في ذلك أننا نشغل الليد ثم نطفئه بشكل مباشر وسريع بالتالي لا نلاحظ عملية الومض، في هذه الحالة علينا استخدام الدالة ()delay التي تضيف فترة انتظار أو تأخير زمني في موضع كتابتها في الكود ويمرر الزمن المطلوب لها بواحدة المللي ثانية ms. وبتعديل الكود السابق تصبح الدالة التكرارية على النحو التالي:

void loop() {
  digitalWrite(13, HIGH);
  delay(1000);
  digitalWrite(13, LOW);
  delay(1000);
}

تحسين الكود البرمجي للتحكم بتشغيل وإطفاء ليد LED

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

لهذا السبب، يجب تعريف متغير ثابت (بما أننا لن نعدل قيمة هذا المتغير أثناء تنفيذ الكود)، يحتوي هذا المتغير على رقم القطب وإذا اضطررنا لتغير رقم القطب فنغير قيمته في الكود مرة واحدة فقط ونُعرِّف المتغير في بداية الكود خارج التوابع ليكون متغيرًا عامًا global variable ونتمكن من استخدامه في أي مكان ضمن الكود.

const int LED_PIN = 13;

يصبح الكود النهائي للمشروع على النحو التالي:

int LED_PIN = 13;

void setup() {
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_PIN, HIGH);
  delay(1000);
  digitalWrite(LED_PIN, LOW);
  delay(1000);
}

محاكاة المشروع

تعد ميزة المحاكاة مفيدة ومهمة في كثير من الأحيان لإجراء بعض التجارب أو المشاريع إضافة إلى أنها توفر الوقت والجهد. وتقدم منصة ووكوي Wokwi إمكانية محاكاة العديد من اللوحات الإلكترونية مثل لوحات الأردوينو Arduino ولوحات إي إس بي اثنان وثلاثين ESP32 ولوحات إس تي إم اثنان وثلاثين STM32 بالإضافة إلى العديد من الحساسات والعناصر والقطع الإلكترونية، يمكنك الاطلاع أكثر على القسم الخاص بتوثيق الموقع للمزيد من المعلومات حول المميزات والخدمات التي يقدمها، اتبع الخطوات الآتية لإنشاء ومحاكاة مشروعك من خلال هذه المنصة:

  1. بعد الدخول إلى موقع ووكوي Wokwi ستظهر لك في الواجهة الرئيسية اللوحات المختلفة التي تستطيع عمل محاكاة لها من خلال الموقع.

002 الصفحة الرئيسية لموقع وكوي

  1. اضغط على خيار Arduino، وانتظر انتهاء تحميل الصفحة ثم انزل قليلًا واختر لوحة أردوينو أونو Arduino Uno.

003 اختيار لوحة أردوينو أونو في موقع وكوي

  1. ستظهر الصفحة الخاصة بمحاكاة مشروعك كما في الصورة التالية، الجزء الأيسر في الصورة خاص بكتابة الكود البرمجي، والجزء الأيمن خاص بإضافة العناصر الإلكترونية وتوصيل الدائرة الكهربائية.

004 صفحة محاكاة المشروع في موقع وكوي

  1. أضف العناصر الإلكترونية اللازمة للمشروع مثل لوحة توصيل التجارب BreadBoard، والليد LED، والمقاومة Resistor (ستلاحظ عند إضافة عنصر المقاومة ظهور نافذة تتيح لك تغير قيمتها، غيرها إلى 220 أوم).

005 إضافة العناصر في موقع وكوي

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

006 النتيجة النهائية لمحاكاة المشروع

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

الخاتمة

تعلمنا في هذا المقال بناء أول مشروع إلكتروني من خلال لوحة أردوينو بعدة خطوات بسيطة وتعرفنا على العديد من الخطوتات والنصائح المفيدة التي تساعد على محاكاة مشروعك وتنفيذه بطريقة صحيحة، وسنستكمل في المقالات القادمة رحلتنا هذه في عالم الأردوينو من خلال بناء المزيد من المشاريع الإلكترونية الممتعة الأكثر تقدمًا.

اقرأ أيضًا


تفاعل الأعضاء

أفضل التعليقات

لا توجد أية تعليقات بعد



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...