المقدمة
استفدنا من تقنية الليزر في الكثير من التطبيقات ومنها في مجال الحماية والأمن، يمكن أن تستخدم مرسل و مستقبل أشعة ليزر لصنع مشروع حماية للأدوات و الممتلكات. تعلم كيف يتم بناء نظام الحماية وبرمجته باستخدام الاردوينو من خلال في هذا الدرس
المواد والأدوات
مجموعة أسلاك توصيل ( ذكر/ ذكر)
مجموعة أسلاك توصيل ( أنثى/ ذكر)
توصيل الدائرة
قم بتوصيل القطع مع الأردوينو كما هو موضح بالشكل التالي
الاردوينو | مستقبل أشعة ليزر |
GND | GND |
2 | OUT |
5 V | VCC |
الاردوينو | مرسل أشعة ليزر |
5v | S |
GNS | – |
وحدة إرسال الليزر :
تعتمد وحدة إرسال الليزر على صمام ثنائي ليزر ، يبلغ طيف انبعاثه 650 نانومتر. تنتشر الإشعاع في شكل حزمة ضيقة ، يظهر لون الضوء الأحمر اذا اصطدمت بحاجز .
تنبية : يتعد أشعة الليزر خطرة في حالة توجيه الحزمة إلى العين بشكل مباشر و لفترات طويلة فقد تسبب ضرر لشبكية العين
البرمجة
قم برفع الكود البرمجي على الأردوينو
#define DETECT 2 #define ACTION 13 void setup() { pinMode(DETECT, INPUT); //define detect input pin pinMode(ACTION, OUTPUT);//define ACTION output pin } void loop() { int detected = digitalRead(DETECT); if( detected == HIGH) { digitalWrite(ACTION,LOW); } else{ digitalWrite(ACTION,HIGH); } delay(200); }
شرح الكود البرمجي:
بالبداية نقوم بتسمية منافذ الأردوينو المستخدمة في هذا المشروع
حيث سيكون المنفذ رقم 2 موصل مع مستقبل أشعة ليزر
والمنفذ رقم 13 يكون موصل مع مصدر الصوت
#define DETECT 2 #define ACTION 13
في دالية setup(): نقوم بتعريف المنافذ سواء كانت منافذ ادخال أو منافذ اخراج
و في هذا المشروع يعد منافذ الادخال هي المفذ المتصل مع مستقبل أشعة الليزر
و يعد منفذ الاخراج هو المنفذ المتصل مع مصدر الصوت
void setup() { pinMode(DETECT, INPUT); //define detect input pin pinMode(ACTION, OUTPUT);//define ACTION output pin }
في دالة loop() نقوم بجعل البرنامج يعطي اشارة لتشغيل مصدر الصوت اذا اخترق احد أشعة الليزر
يقوم البرنامج بقراءة منفذ الادخال، فاذا كانت القراءة (LOW) يتم اعطاء اشارة للمنفذ رقم 13 (منفذ مصدر الصوت ) ليعملو العكس حيث في حال أعطى منفذ الادخال اشارة (HIGH) لن يعمل مصدر الصوت
ثم يتم اضافة زمن انتظار و هو ثانيتين
void loop() { int detected = digitalRead(DETECT); if( detected == HIGH) { digitalWrite(ACTION,LOW); } else{ digitalWrite(ACTION,HIGH); } delay(200); }