الإعلانات

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

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

ما تحتاجه لبناء وحدة تحكم إشارة المرور اردوينو

بصرف النظر عن اردوينو الأساسية ، ستحتاج إلى:

  • 1 × 10 كيلو أوم المقاوم
  • 1 × الضغط على زر التبديل
  • مقاومات 6 × 220 أوم
  • اللوح
  • توصيل الأسلاك
  • المصابيح الحمراء والصفراء والخضراء

ستعمل أي اردوينو تقريبًا في هذا المشروع ، شريطة أن يكون لديه دبابيس كافية. تأكد من قراءة لدينا دليل شراء اردوينو دليل شراء اردوينو: أي مجلس يجب أن تحصل عليه؟هناك العديد من الأنواع المختلفة من لوحات Arduino ، يمكنك أن تغفر لكونك مرتبكًا. ما الذي يجب أن تشتريه لمشروعك؟ دعنا نساعد ، من خلال دليل شراء Arduino هذا! اقرأ أكثر إذا كنت غير متأكد من النموذج الذي تحتاجه. قد يكون لديك بالفعل هذه الأجزاء في اردوينو كاتب كيت ماذا يوجد في مجموعة اردوينو الخاصة بك؟ [اردوينو مبتدئين]في مواجهة صندوق مليء بالمكونات الإلكترونية ، من السهل أن تطغى عليه. فيما يلي دليل لما ستجده بالضبط في المجموعة الخاصة بك. اقرأ أكثر .

اردوينو اشارة المرور: الأساسيات

لنبدأ صغيرًا. تعتبر إشارة المرور الفردية الأساسية مكانًا جيدًا للبدء. ها هي الدائرة:

مخطط الدائرة لضوء إشارة اردوينو الأساسي

قم بتوصيل الأنود (الساق الطويلة) من كل LED إلى دبابيس رقمية ثمانية وتسعة وعشرة (عبر المقاوم 220 أوم). قم بتوصيل الكاثودات (الساق القصيرة) بأرض اردوينو.

رمز للإشارة اردوينو

ابدأ بتحديد المتغيرات بحيث يمكنك معالجة الأضواء بالاسم بدلاً من الرقم. ابدأ مشروع Arduino جديد ، وابدأ بهذه السطور:

أحمر أحمر = 10 ؛ كثافة العمليات الصفراء = 9 ؛ كثافة العمليات الخضراء = 8 ؛

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

void setup () {pinMode (red، OUTPUT)؛ pinMode (الأصفر ، الإخراج) ؛ pinMode (الأخضر ، الإخراج) ؛ }

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

void loop () {changeLights ()؛ تأخير (15000) ؛ } void changeLights () {// green off، yellow on for 3 seconds digitalWrite (green، LOW)؛ digitalWrite (الأصفر ، عالية) ؛ تأخير (3000) ؛ // أطفئ اللون الأصفر ، ثم قم بتشغيل الأحمر لمدة 5 ثوان من كتابة digitalWrite (أصفر ، منخفض) ؛ digitalWrite (الأحمر ، عالية) ؛ تأخير (5000) ؛ // الأحمر والأصفر على لمدة 2 ثانية (أحمر بالفعل على الرغم من) digitalWrite (الأصفر ، عالية) ؛ تأخير (2000) ؛ // أطفئ اللون الأحمر والأصفر ، ثم قم بتشغيل digitalWrite الأخضر (أصفر ، منخفض) ؛ digitalWrite (أحمر ، منخفض) ؛ digitalWrite (الأخضر ، عالية) ؛ تأخير (3000) ؛ }

قم بتحميل هذا الرمز إلى Arduino الخاص بك ، وقم بتشغيله (تأكد من تحديد اللوحة والمنفذ الصحيحين من أدوات > مجلس و أدوات > ميناء القوائم). يجب أن يكون لديك إشارة مرور صالحة للعمل تتغير كل 15 ثانية ، مثل هذا (انطلق):

اردوينو اشارة المرور في العمل

دعنا ننهار هذا الكود. ال changeLights وظيفة يؤدي كل عمل شاق. هذا تدوير إشارة المرور من خلال الأصفر والأحمر ، ثم العودة إلى اللون الأخضر. كما يحصل هذا يسمى داخل عقدة وظيفة ، سوف يعمل اردوينو هذا الرمز إلى الأبد ، مع توقف لمدة 15 ثانية في كل مرة.

ال changeLights تتكون الوظيفة من أربع خطوات متميزة:

  • الأخضر على ، قبالة الأصفر
  • قبالة الأصفر والأحمر جرا
  • الأصفر على والأحمر جرا
  • الأخضر على ، قبالة الأحمر ، قبالة الأصفر

هذه الخطوات الأربع تكرار العملية المستخدمة في إشارات المرور الحقيقية. لكل خطوة ، رمز مشابه جدا. يتم تشغيل أو إيقاف تشغيل مؤشر LED المناسب digitalWrite. هذه وظيفة Arduino تُستخدم لتعيين دبابيس الإخراج على HIGH (للتشغيل) أو LOW (للإيقاف).

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

الذهاب أعمق: معبر اردوينو للمشاة

الآن بعد أن عرفت الأساسيات ، فلنحسنها. أضف زر ضغط للمشاة لتغيير الضوء وقتما يحلو لهم:

مخطط الدائرة لعبور المشاة اردوينو

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

يتيح المفتاح إما التدفق الحالي أو لا. يبدو هذا بسيطًا بما فيه الكفاية ، ولكن في دائرة المنطق ، يجب أن يتدفق التيار دائمًا إما في حالة عالية أو منخفضة (تذكر ، 1 أو 0 ، عالية أو منخفضة). قد تفترض أن مفتاح الضغط على زر لم يتم ضغطه بالفعل سيكون في حالة منخفضة ، ولكن في الواقع ، يُقال إنه "عائم" ، لأنه لا يتم سحب أي تيار على الإطلاق.

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

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

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

رمز لمعبر اردوينو للمشاة

ابدأ بإضافة متغير جديد لتخزين دبوس الزر الخاص بك:

زر كثافة العمليات = 12 ؛ / / التبديل على دبوس 12. 

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

pinMode (زر ، INPUT) ؛ digitalWrite (الأخضر ، عالية) ؛

تغيير وظيفة حلقة بأكملها إلى ما يلي بدلاً من ذلك:

void loop () {if (digitalRead (button) == HIGH) {delay (15)؛ // برنامج debounce if (digitalRead (زر) == HIGH) {// إذا كان المفتاح عاليًا ، أي. دفعت إلى أسفل - تغيير الأضواء! changeLights ()؛ تأخير (15000) ؛ // انتظر 15 ثانية}} }

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

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

إليك كيف يبدو ذلك (أسرع):

اردوينو عبور المشاة في العمل

اردوينو اشارة المرور مع مفرق

لنجرب نموذجًا أكثر تقدمًا. بدلاً من عبور المشاة ، قم بتغيير دائرتك للحصول على إشارتين مروريتين:

مخطط Cricuit لإشارات المرور Arduino مع تقاطع

قم بتوصيل إشارة المرور الثانية بالدبابيس الرقمية 11 و 12 و 13.

رمز للإشارة اردوينو مع مفرق

أولاً ، قم بتعيين دبابيس إشارة المرور الجديدة للمتغيرات ، وقم بتكوينها كمخرجات ، كما في المثال الأول:

// ضوء واحد. red1 = 10 ؛ الباحث yellow1 = 9 ؛ كثافة العمليات الخضراء 1 = 8 ؛ // ضوء اثنين. red 2 = 13 ؛ كثافة العمليات الصفراء 2 = 12 ؛ كثافة العمليات الخضراء 2 = 11 ؛ void setup () {// light one pinMode (red1، OUTPUT)؛ pinMode (yellow1، OUTPUT)؛ pinMode (green1 ، الإخراج) ؛ // light two pinMode (red2، OUTPUT)؛ pinMode (yellow2، OUTPUT)؛ pinMode (green2 ، OUTPUT) ؛ }

الآن ، قم بتحديث الحلقة الخاصة بك لاستخدام الكود من المثال الأول (بدلاً من معبر المشاة):

void loop () {changeLights ()؛ تأخير (15000) ؛ }

مرة أخرى ، يتم تنفيذ كل العمل في changeLights وظيفة. بدلا من الذهاب أحمر > أحمر & الأصفر > أخضرسيؤدي هذا الرمز إلى تبديل إشارات المرور. عندما يكون أحدهما أخضر ، يكون الآخر باللون الأحمر. إليك الكود:

void changeLights () {// قم بتشغيل كلا الصفرين على digitalWrite (green1، LOW)؛ digitalWrite (yellow1 ، عالية) ؛ كتابة رقمية (yellow2 ، عالية) ؛ تأخير (5000) ؛ / / قم بإيقاف تشغيل كل من yellows ، و digitalWrite الأخضر والأحمر المعاكس (yellow1 ، LOW) ؛ digitalWrite (red1 ، عالية) ؛ digitalWrite (yellow2، LOW)؛ digitalWrite (red2، LOW)؛ digitalWrite (green2 ، عالية) ؛ تأخير (5000) ؛ // كلاهما يصفر على digitalWrite مرة أخرى (yellow1، HIGH)؛ كتابة رقمية (yellow2 ، عالية) ؛ digitalWrite (green2، LOW)؛ تأخير (3000) ؛ / / قم بإيقاف تشغيل كل من yellows ، وخاصية digitalWrite باللونين الأخضر والأحمر (green1 ، HIGH) ؛ digitalWrite (yellow1، LOW)؛ digitalWrite (red1، LOW)؛ digitalWrite (yellow2، LOW)؛ digitalWrite (red2 ، عالية) ؛ تأخير (5000) ؛ }

إليك ما يبدو عليه الأمر (الإسراع):

اردوينو اشارة المرور مع تقاطع في العمل

اردوينو اشارة المرور الخطوات التالية

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

أو لماذا لا توسع مهاراتك الجديدة بمشروع أكبر مثل هذا تحكم MIDI DIY أو اردوينو الروبوت مع Xod? يمكنك أيضا إلقاء نظرة على اردوينو الترميز مع رمز VS و PlatformIO أفضل اردوينو الترميز مع رمز VS و PlatformIOتريد وسيلة سهلة لبدء الترميز اردوينو؟ مع PlatformIO و VS Code ، يمكنك تبسيط مشاريع Arduino والتعلم بشكل أسرع. اقرأ أكثر .

صورة الائتمان: androsvector / Shutterstock

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