الروبوت متتبع الضوء

متقدم

image_pdf

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

في هذا المشروع سنستخدم روبوت Ranger  الذي يحتوي على مستشعرين للضوء لبرمجة روبوت يتتبع مصدر الضوء .

light-follower-robot

 

الأدوات المطلوبة

light-follower-robot

mBot Ranger Kit

 

فكرة المشروع

تحتوي اللوحة الرئيسية Auriga على مستشعرين للضوء
ومستشعر الضوء عبارة عن قطعة الكترونية تصنع من مادة شبه موصلة للكهرباء عندما يتعرض المستشعر للضوء فإن قدرته على توصيل الكهرباء تصبح أعلى فيعطى إشارة كهربائية أكبر

light-follower-robot

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

اختبار المستشعر

قد تختلف دقة المستشعرات الالكترونية بنسب بسيطة تعود إلى عوامل في التصنيع
سنقوم بعمل اختبار لمستشعري الضوء الموجودين في لوحة Auriga لمعرفة الفرق في دقة القياس بين المستشعرين

أولا قم بإنشاء متغيرين Light1  و Light2 مثلا

light-follower-robot

قم بتعيين المتغير الأول لقراءة المستشعر الأول on board 1
والمتغير الثاني لقراءة المستشعر الثاني on board 2

light-follower-robot

نلاحظ قيم القراءات على الشاشة
قم بتسليط ضوء على المستشعرين أو حجبهما عن الضوء بيدك لملاحظة الفرق

light-follower-robot

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

برمجة الروبوت

 

سنقوم في البداية بإنشاء متغيرين Light 1  وتعيينه لقراءة المستشعر الأيسر (كما هو مكتوب على اللوحة الرئيسية)
ومتغير Light2 وتعيينه لقراءة المستشعر الأيمن  في اللوحة

 

light-follower-robot

 

داخل حلقة Forever
سنستخدم ثلاث جمل شرطية if لتمثل لنا ثلاث حالات مختلفة
الأولى إذا تعرض المستشعرين لنفس شدة الضوء والحالتين الأخرى إذا كانت شدة الضوء على أحدهما أكبر من الآخر

الشرط الذي يمثل حالة أن تكون قراءة المستشعر الأول = الثاني

light-follower-robot

لكن بما أننا وجدنا اختلافا في قراءة المستشعرين تصل إلى 5 أرقام عن اختبارهما في الخطوة السابقة سنعيد كتابة الشرط كالتالي

 light-follower-robot

وهذا يعني أنه إذا كان الفرق بين قيمة المستشعر الأول والثاني أقل من 6 فسيتم اعتبار أنهما متساويان ويتحرك الروبوت للأمام
أضفنا abs القيمة المطلقة لتعطي ناتج الطرح قيمة موجبة دائمًا سواء كانت قيمة Light1 أكبر من Light2 أو العكس.

light-follower-robot

 

إذا لم يتحقق الشرط الأول أي إذا كان الفرق بين القراءتين 6 أو أكبر يتم تنفيذ الأوامر بعد else
حيث سنضيف الشروط المتعلقة بالحالتين الأخرى

الحالة الثانية
إذا كانت قراءة المستشعر الأيسر Light1 أكبر من قراءة المستشعر الأيمن Light2
ينعطف الروبوت باتجاه اليسار أي باتجاه شدة الإضاءة الأعلى

light-follower-robot

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

الكود البرمجي

 

light-follower-robot

لمزيد من المعلومات حول الأوامر البرمجية الأخرى قم بالرجوع لدرس جولة حولة الأوامر البرمجية

 

X
Product added to the cart