مشروع رقم 1 : حاجز القطار(Barrière de train)

نفتتح قسم جديد تحت إسم “مشاريع” و هي حوصلة لكل الدروس سابقة .
نبدأ بأوّل مشروع “حاجز القطار”

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

قبل وصول القطار يكون المصباح الأخضر في حالة إضاءة مع رفرفة خفيفية (كل نصف ثانية) و الحاجز في وضعيّة الإعتياديّة

يحتوي مشروع حاجز القطار على زرّبن ضاغطين (على اليمين و على اليسار) وهي خاصة بالقطار لضغط عليها و 3 مصابيح لتنبيه المارّة و حاجز لقطع الطريق

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

يبدأ الحاجز في النزول و لقطع الطريق

ينتهي الحاجز من النزول قبل وصول القطار مع المحافظة على إضاءة المصباح بلون الأحمر

يمر القطار من الطريق مع المحافظة على وضعية الحواجز و الإنارة

و عند إبتعاد القطار من الطريق يضغط على الزر الضاغط الثّاني آليا فتتغير الإضاءة للون الأخضر برفرفة عاديّة و تنطفئ المصابيح باللون الأحمر مع بدأ في رفع الحواجز مباشرة

إنتهاء من رفع الحواجزو الرجوع إلى الوضعيّة الأولى


سنعتمد في هذا المشروع على إتجاه القطار من اليمين إلى اليسار و سيكون تمرين خاص إليك (إضافة رجوع القطار من اليسار إلى اليمين من نفس السكّة)

الدّارة الكهربائيّة للمشروع “حاجز القطار’

دارة كهربائية عبر برمجيّة Proteus ISIS

الجزء الأوّل

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

  1. ثلاثة صمامات مشعّة (1 لون أخضر(LED-GREEN) و 2 بلون الأحمر(LED-RED))
  2. زرين ضاغطين (BUTTON)
  3. لوحة أردويمو أونو(ARDUINO UNO)
  4. مقاومات كربونيّة (RES)

في ما يلي الدّارة الكهربائيّة

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

int pinVert = 4;
int pinRouge1 = 3;
int pinRouge2 = 5;
int pinBtnD = 11;
int pinBtnG = 12;
int btn;

منفذ صمام الأخضر برقم 4 و بلون الأحمر 3 و 5 و المنفذ بالنسبة لزر الضاغط على اليمين رقم 11 و على اليسار رقم 12
تمّ إنشاء متغيّر btn لحفظ وضعيّة وجود القطار قرب الطريق

بالنسبة للجزء الخاص بالأعدادات

void setup() {
pinMode(pinVert, OUTPUT);
pinMode(pinRouge1, OUTPUT);
pinMode(pinRouge2, OUTPUT);
pinMode(pinBtnD, INPUT);
pinMode(pinBtnG, INPUT);
btn = 0;
}

بالنسبة للمنافذ للصمامات pinVert و pinRouge1 و pinRouge2 تكون من نوع إخراج التيّار الكهربائي
و لأما بالنسبة إلى للمنافذ الأزرار الضاغطة pinBtnD و pinBtnG من نوع إدخار التيّار الكهربائي
وتم تعيين المتغيّر كقيمة أصليّة بـ 0 (لا يوجد قطار)

أما بالنسبة للبرنجة الرئيسيّة

void loop() {
if (digitalRead(pinBtnG) == 1) {
btn = 0;
}
if (digitalRead(pinBtnD) == 1) {
btn = 1;
}
if (btn == 1) {
digitalWrite(pinVert, LOW);
digitalWrite(pinRouge1, HIGH);
digitalWrite(pinRouge2, LOW);
delay(100);
digitalWrite(pinRouge1, LOW);
digitalWrite(pinRouge2, HIGH);
delay(100);
} else {
digitalWrite(pinRouge1, LOW);
digitalWrite(pinRouge2, LOW);
digitalWrite(pinVert, HIGH);
delay(1000);
digitalWrite(pinVert, LOW);
delay(500);
}
}

إذا تمّ الضغط على الزر الأيمن تكون قيمة المتغيّر btn بقيمة 1 (القطار موجود) و إذا تمّ الضغط على الزر الضاغط الأيسر فقيمة المتغيّر تكون 0 (القطار غير موجود)
و حسب قيمة المتغيّر btn تضيء الصمامات المشعّة
إذا كانت القيمة 0 يضيء الصمام المشع الأخضربطريقة عادية نصف ثانية للإضاءة و نصف ثانية منطفئة
و أما إذا كانت القيمة 1 (وجود القطار) يضيء الصمام المشع الأحمر الأوّل ثم ينطفئ بسرعة (100 جزء من الثانية مثلا) ثم يضيء الصمام المشع الثاني ثم ينطفئ بنفس المدّة الزمنيّة و تتكرر العمليّة إلى خروج القطار

الجزء الثاني

في هذا الجزء سنضيف مكوّن جرس كهربائي(BUZZER) كإشارة سمعية للمستعمل
ملاحظة: يجب إختيار المكوّن في حالة نشاط (active)

بما أنّه مستهلك للطاقة الكهربائيّة و هناك من يشتغل بـ 12 فولط سنستعمل معه كعنصر وسيط الترانزيستور NPN مع مقاوم كربوني لتخفيض من الشدّة التيّار الكهربائي
و في ما يلي الدّارة الكهربائيّة ااتاليّة

بالنسبة للبرمجة تضاف متغيّر جديد (pinBuz) لحفظ منفذ الجرس مثال المنفذ 2

int pinBuz = 2;

بالنسبة للأعدادات المنفذ من نوع إخراج للتيّار الكهربائي

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

و بالنسبة إلى البرمجة الرئيسّية يرنّ عندما يكون القطار موجود و لا يرنّ عندما لا يكون هناك قطار

void loop() {
if (btn == 1) {
tone(pinBuz,500);
} else {
noTone(pinBuz);
}
}

الجزء الثالث و الأخير

يضاف في هذا الجزء محرّك سيرفو لدوران الحاجز لغلق الطريق
بإستعمال المكوّن (MOTOR-PWMSERVO)

تضاف مكتبة خاصة (Servo.h) و المتغيّرات myservo و pinMoteur كمنفذ 8 مثلا

#include <Servo.h>
int pinMoteur=8;

بالنسبة للأعدادات تضاف لتعريف بالمكتبة المنفذ الخاص بالمكرّك سيرفو

void setup() {
myservo.attach(pinMoteur);
}

أما بالنسبة للبرمجة الرئيسيّة تضاف بأن يدور إلى زاوية 90 درجة عندما يكون القطار موجود و لا يعود إلى زاويّة 0 عندما لا يكون موجود

if (btn == 1) {
myservo.write(90);
} else {
myservo.write(0);
}

الدّارة الكهربائيّة النهائيّة

و في ما يلي الكود كامل للمشروع

#include <Servo.h>
Servo myservo;
int btn;
int pinVert = 4;
int pinRouge1 = 3;
int pinRouge2 = 5;
int pinBtnD = 11;
int pinBtnG = 12;
int pinBuz = 2;
int pinMoteur = 8;
void setup() {
myservo.attach(pinMoteur);
pinMode(pinVert, OUTPUT);
pinMode(pinRouge1, OUTPUT);
pinMode(pinRouge2, OUTPUT);
pinMode(pinBuz, OUTPUT);
pinMode(pinBtnD, INPUT);
pinMode(pinBtnG, INPUT);
btn = false;
}
void loop() {
if (digitalRead(pinBtnG) == 1) {
btn = 0;
}
if (digitalRead(pinBtnD) == 1) {
btn = 0;
}
if (btn == 1) {
myservo.write(90);
tone(pinBuz, 500);
digitalWrite(pinVert, LOW);
digitalWrite(pinRouge1, HIGH);
digitalWrite(pinRouge2, LOW);
delay(100);
digitalWrite(pinRouge1, LOW);
digitalWrite(pinRouge2, HIGH);
delay(100);
}
else {
myservo.write(0);
noTone(pinBuz);
digitalWrite(pinRouge1, LOW);
digitalWrite(pinRouge2, LOW);
digitalWrite(pinVert, HIGH);
delay(1000);
digitalWrite(pinVert, LOW);
delay(500);
}
}

شاهد هذا الفيديو لمعرفة كيفيّة عمل هذا المشروع بإستعمال برمجيّة Proteus ISIS

دارة كهربائية عبر برمجيّة Tincarcad

دارة كهربائيّة على موقع Tincarcad

نمّ إضافة مقاوم كربوني قبل المحرّك سيرفو لتخفيض من شدّة التيّار الكهربائي

لمشاهدة التمرين و تجربته (محاكته) عبر موقع TinKerCad إضغط هنا

شاهد هذا الفيديو لمعرفة كيفيّة عمل هذا المشروع بإستعمال الموقع TinKerCad

تمرين خاص

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

لإرسال التمرين أو إضافة أو إقتراحات الرجاء إضغط هنا