مقدمة:
سنقوم في هذا المشروع ببناء روبوت يشع الضوء لزاوية مقدارها 90 درجة.

سنقوم بإعطاء الأوامر الصوتية للروبوت عن طريق استخدام مستشعر الصوت.
عمل مروحة ذكية تعمل عند الاقتراب منها وتزداد سرعتها كلما قلت المسافة
سنقوم في هذا المشروع ببرمجة لعبة Whac-A-mole من خلال استخدام عصا التحكم و RGB
برمجة الروبوت والتحكم به بواسطة مستشعر التسارع في الهاتف الذكي وتطبيق MakeBlock
مشروع محاكاة إشارة المرور باستخدام RGB ومحرك سيرفو ووحدة 7-segment
محتويات هنا
محتويات هنا
محتويات هنا
محتويات هنا
جميع مشاريع ودروس MakeBlock
سنقوم في هذا المشروع ببناء روبوت يشع الضوء لزاوية مقدارها 90 درجة.
في هذا المشروع سنقوم بإنشاء روبوت يلقي التحية عند الاقتراب منه مسافة معينة.
نبدأ بتركيب الروبوت. ومن ثم نقوم بتشكيل الروبوت بإضافة Servo Motor & Ultrasonic Sensor كالتالي :
أولا : قم بإعادة تركيب mBot .
ثم نقوم بتثبيت مستشعر الموجات فوق الصوتية
وبعد ذلك، قم بتثبيت محرك الـ Servo :
ثم نقوم بتثبيت قطعة الـ cuttable linkage :
وأخيرا، قم بتجميع القطع :
ثم نقوم بتوصيل Servo Motor بمدخل رقم 1 و نوصل Ultrasonic Sensor بمدخل رقم 2
أولا: نبدأ بتهيئة محرك الـسيرفو، و الـ LED عن طريق وضع القيم الإبتدائية كالتالي:
بعدها نقوم بإدراج دالة التكرار
داخل دالة التكرار، نقوم بإضافة الدالة الشرطية if. تفيدنا هذه الدالة لجعل الروبوت يلقي التحية عند الإقتراب منه مسافة 30 سم أو أقل.
سوف نقوم بإستخدام الحالات الآتية في الدوال الشرطية :
الحالة الأولى إذاكانت المسافة أكبرمن30 سم.
الحالة الثانية إذاكانت المسافة تساوي30 سم.
الحالة الثالثة إذاكانت المسافة أصغر من30 سم.
في الحالة الأولى، فإن الروبوت لن يكون بإلقاء التحية ويعود إلى حالته الإبتدائية وسيتم إضائة الـ LED باللون الأحمر كما هو موضح :
ثم نقوم بإستخدام الحالة الثانية والثالثة، لجعل الروبوت يلقي التحية ويضيء باللون الأزرق والوردي كالتالي :
لمعرفة أساسيات البرمجة المستخدمة الرجاء مراجعة درس جولة حول الأوامر البرمجية.
سنقوم في هذا المشروع ببرمجة لعبة Whac-A-mole المسلية من خلال استخدام عصا التحكم و RGB وحساب النقاط وعرضها على وحدة عرض 7-segment
سنستخدم في هذا المشروع القطع التالية:
المنفذ | القطعة الالكترونية |
منفذ3 | RGB LED |
منفذ4 | 7-segment |
منفذ6 | عصا التحكم joystick |
تحتوي وحدة RGBعلى 4 LED سنقوم ببرمجتها لتتم إضاءتها عشوائيا وبشكل سريع ، ونلاحق هذه الإضاءة عبر عصا التحكم، عند توافق توجيه العصا باتجاه LED المضاءة يتحول لونها من الأزرق إلى الأحمر وتسجيل نقطة تظهر على وحدة عرض 7-segment
تتحرك عصا التحكم في اتجاهات مختلفة ، نحتاج لاختبارها وتحديد القيمة التي تعطيها في كل اتجاه .
نقوم بتوصيل عصا التحكم باللوحة Orion في المنفذ 6
واستخدام الكود التالي لعرض القراءة على الشاشة
قم بتحريك عصا التحكم في اتجاه Y أعلى وأسفل وفي اتجاه X يمينا ويسارًا وتسجيل القيمة التي تعطيها في كل اتجاه لنستخدم هذه القيم في برمجة اللعبة
سنحتاج بداية لانشاء 4 متغيرات
المتغير | الوظيفة |
LED | يشير إلى رقم LED في وحدة RGB |
Score | لتسجيل النقاط عند التصويب |
X | لتخزين قيمة حركة عصا التحكم في اتجاه X |
Y | لتخزين قيمة حركة عصا التحكم في اتجاه y |
نبدأ الكود بتعيين قيمة RGB LED وحدة 7-segment على قيمة 0
وتعيين العداد على 0
داخل حلقة Forever
نقوم بتعيين المتغير LED بحيث تتغير القيمة بصورة عشوائية من 0 – 4 وفق عدد LED أو من 0-8 لتقليل سرعة التغير في الإضاءة
ثم نضع أمر إضاءة LED بحيث تضاء حسب الرقم العشوائي كل مرة
نقوم بتعيين المتغيرين X و Y على حركة عصا التحكم Joystick
نستخدم جملتين شرطيتين if ..then
بحيث إذا كانت قيمة LED تساوي 1 (أي LED1 مضاءة)
وتم تصويب عصا التحكم في اتجاه LED (نضع قيمةY وفق القيمة التي حصلنا عليها عند اختبار عصا التحكم)
نضيف الأمر بحيث تتغير الإضاءة من أزرق إلى أحمر
وتسجيل نقطة في المتغير Score
وعرض عدد النقاط على وحدة 7-segment
يتم كتابة الأكواد للاتجاهات و LED الأخرى بنفس الطريقة مع وضع القيم المناسبة
قم بالإطلاع على الكود كاملا :
وللمزيد من المعلومات حول الكود يمكنك مراجعة درس جولة حول الأوامر البرمجية.
من أشهر المسابقات في عالم الروبوت برمجة روبوت يتتبع المسار ، سنقوم في هذا الدرس بتعلم كيفية برمجة روبوت يتتبع المسارات المختلفة بدقة عالية.
تتكون وحدة تتبع المسار من مستشعرين كل مستشعر يتكون من مصدر للأشعة تحت حمراء (LED) ومستقبل لهذه الأشعة
فكرة عمل مستشعر تتبع المسار تقوم على إطلاق أشعة تحت حمراء ورصد انعكاسها
عند سير الروبوت على الأسطح البيضاء فإن معظم الأشعة تنعكس من على السطح ويتم رصدها
أما عند سير الروبوت على الأسطح السوداء فإن اللون الأسود يمتص معظم الأشعة فلا ينعكس إلا مقدار بسيط منها إلى المستشعر
الأمر البرمجي لقراءة وحدة تتبع المسار
يعطي قيم بين 0 – 3 بناء على الحالات التالية
الحالات | قيمة القراءة | المستشعر الأيمن | المستشعر الأيسر |
كلا المستشعرين على اللون الأسود | 0 | ||
المستشعر الأيسر فقط على اللون الأسود | 1 | ||
المستشعر الأيمن فقط على اللون الأسود | 2 | ||
كلا المستشعرين على اللون الأبيض | 3 |
لبرمجة روبوت mBot نستخدم الأمر البرمجي لكتابة الكود على لوحة mCore
نستخدم الجملة الشرطية if.. then.. else
بحيث إذا كان مستشعر تتبع المسار على اللون الأسود (أي القيمة تساوي 0 ) يتحرك الروبوت للأمام بسرعة تساوي 100، وإذا كانت المستشعر الأيمن على الخط الأسود والمستشعر الأيسر على الخط الأبيض يتحرك الروبوت إلى اليمين، والعكس… .
للمزيد من المعلومات حول الكود يمكنك مراجعة درس جولة حول الأوامر البرمجية.
يمكن كذلك استخدام روبوت Ranger كروبوت متتبع للمسار عبر تطبيق MakeBlock
بعد فتح التتطبيق وربطه بالروبوت قم باختيار Ranger ثم Line following
توجد الكثير من النباتات التي تتحرك تبعا للشمس مثل زهور تباع الشمس وقد استفاد العلماء من محاكاة الطبيعة في الكثير من الاختراعات مثل الألواح الشمسية التي تتبع الشمس لتحقيق أقصى استفادة ممكنة من الطاقة الشمسية.
في هذا المشروع سنستخدم روبوت Ranger الذي يحتوي على مستشعرين للضوء لبرمجة روبوت يتتبع مصدر الضوء .
تحتوي اللوحة الرئيسية Auriga على مستشعرين للضوء
ومستشعر الضوء عبارة عن قطعة الكترونية تصنع من مادة شبه موصلة للكهرباء عندما يتعرض المستشعر للضوء فإن قدرته على توصيل الكهرباء تصبح أعلى فيعطى إشارة كهربائية أكبر
في هذا المشروع سنقوم بكتابة برنامج يقوم بمقارنة كمية الضوء الساقطة على المستشعرين
إذا كان المستشعر الأول (الأيمن) يتعرض للضوء أكثر من المستشعر الثاني (الأيسر) فإن الروبوت ينعطف باتجاه شدة الإضاءة الأعلى (اليمين .في هذه الحالة) وإذا تعرض المستشعرين لنفس الكمية من الضوء يتحرك الروبوت للأمام
قد تختلف دقة المستشعرات الالكترونية بنسب بسيطة تعود إلى عوامل في التصنيع
سنقوم بعمل اختبار لمستشعري الضوء الموجودين في لوحة Auriga لمعرفة الفرق في دقة القياس بين المستشعرين
أولا قم بإنشاء متغيرين Light1 و Light2 مثلا
قم بتعيين المتغير الأول لقراءة المستشعر الأول on board 1
والمتغير الثاني لقراءة المستشعر الثاني on board 2
نلاحظ قيم القراءات على الشاشة
قم بتسليط ضوء على المستشعرين أو حجبهما عن الضوء بيدك لملاحظة الفرق
من خلال الملاحظة يمكن أن نجد نسبة الاختلاف بين قراءة المستشعرين في هذا الاختبار وجدنا أنها يمكن أن تصل إلى 5 أرقام عند تعرضهما لنفس شدة الإضاءة (قد تختلف من لوحة إلى لوحة أخرى).
سنستفيد من هذه القيمة عند كتابة الكود في الخطوة التالية.
سنقوم في البداية بإنشاء متغيرين Light 1 وتعيينه لقراءة المستشعر الأيسر (كما هو مكتوب على اللوحة الرئيسية)
ومتغير Light2 وتعيينه لقراءة المستشعر الأيمن في اللوحة
داخل حلقة Forever
سنستخدم ثلاث جمل شرطية if لتمثل لنا ثلاث حالات مختلفة
الأولى إذا تعرض المستشعرين لنفس شدة الضوء والحالتين الأخرى إذا كانت شدة الضوء على أحدهما أكبر من الآخر
الشرط الذي يمثل حالة أن تكون قراءة المستشعر الأول = الثاني
لكن بما أننا وجدنا اختلافا في قراءة المستشعرين تصل إلى 5 أرقام عن اختبارهما في الخطوة السابقة سنعيد كتابة الشرط كالتالي
وهذا يعني أنه إذا كان الفرق بين قيمة المستشعر الأول والثاني أقل من 6 فسيتم اعتبار أنهما متساويان ويتحرك الروبوت للأمام
أضفنا abs القيمة المطلقة لتعطي ناتج الطرح قيمة موجبة دائمًا سواء كانت قيمة Light1 أكبر من Light2 أو العكس.
إذا لم يتحقق الشرط الأول أي إذا كان الفرق بين القراءتين 6 أو أكبر يتم تنفيذ الأوامر بعد else
حيث سنضيف الشروط المتعلقة بالحالتين الأخرى
الحالة الثانية
إذا كانت قراءة المستشعر الأيسر Light1 أكبر من قراءة المستشعر الأيمن Light2
ينعطف الروبوت باتجاه اليسار أي باتجاه شدة الإضاءة الأعلى
الحالة الثالثة
إذا كانت قراءة المستشعر الأيسر Light2 أقل من قيمة المستشعر الأيمن Light1
ينعطف الروبوت لليمين أي باتجاه شدة الإضاءة الأعلى.
لمزيد من المعلومات حول الأوامر البرمجية الأخرى قم بالرجوع لدرس جولة حولة الأوامر البرمجية
يصبح الروبوت في بعض الظروف مناسبًا لتأدية المهام أكثر من الانسان مثل حالات الحرائق والأماكن الغير آمنة وذلك لحماية الانسان من الخطر.
سنقوم في هذا المشروع ببرمجة الروبوت لإرساله في عملية إنقاذ والتحكم به بواسطة حركة الهاتف الذكي أو الجهاز اللوحي الذي يحتوي على مستشعر التسارع Accelerometer وباستخدام تطبيق Makeblock.
مستشعر التسارع عبارة عن جهاز كهروميكانيكي صغير يقوم بقياس القوة الناتجة عن تسارع الجسم نتيجة الحركة أو الاهتزاز ويمكن لمقياس التسارع تحليل حركة الجهاز وتحديد الاتجاه الذي يميل فيه من خلال مقارنة تسارع الجهاز بالنسبة للأرض.
لمستشعر التسارع العديد من التطبيقات مثل السيارات لإطلاق الأكياس الهوائية عند التوقف بشكل مفاجيء (يقل التسارع سريعا) وفي معظم الأجهزة المحمولة والذكية لاستشعار وضعية الجهاز وتعديل الشاشة وكذلك في التطبيقات الترفيهية والألعاب.
سنقوم باستخدام جهاز محمول أو لوحي يحتوي على مستشعر التسارع للتحكم بالروبوت عبر البلوتوث
بحيث يتحرك الروبوت تبعا لحركة الهاتف أو الجهاز اللوحي.
سنقوم ببرمجة الروبوت باستخدام تطبيق MakeBlock
إذا كانت هذه المرة الأولى التي تستخدم فيها التطبيق قم بمراجعة درس تطبيق MakeBlock
قم بتنزيل التطبيق على هاتف ذكي أو جهاز لوحي وتأكد بأنه يحتوي على مستشعر التسارع من خلال مراجعة مواصفات الجهاز.
للتحكم في حركة الروبوت سنقوم ببرمجته بحيث يتحرك في نفس الاتجاه الذي يميل فيه الهاتف المحمول
من خلال واجهة التطبيق سنقوم باختيار الروبوت Ultimate واختيار إضافة مشروع جديد New Project
سنقوم بإضافة مفتاح Switch ونسميه Tilt
تحت أمر تشغيل المفتاح سنضيف كود تحكم الحركة بإضافة أوامر شرطية
بحيث إذا تم توجيه الهاتف للأمام يتحرك الروبوت للأمام
وكذلك بالنسبة للخلف واليمين واليسار
تحت أمر إغلاق المفتاح نضع أمر توقف الحركة
يتم وضع الأوامر البرمجية داخل أمر Repeat Forever
ينقسم التحكم بذراع الروبوت إلى قسمين : حركة الذراع للأعلى والأسفل وحركة المقبض للإمساك بالأشياء وإفلاتها
سنقوم بإضافة 4 أزرار تحكم
لتحرك الذراع للأعلى سوف نسمي الزر الأول Up بالنقر عليه واختيار علامة تعديل الاسم
عند ضغط الزر سنضيف الأمر البرمجي المتعلق بتحريك محرك التشفير encoder motor المسؤول عن تحريك الذراع واختيار رقم المنفذ الذي تم توصيله به
وعند ترك الزر نضع السرعة صفر للتوقف
لتحريك الذراع للأسفل سوف نسمي الزر الآخر Down
ونضيف نفس الكود البرمجي لمحرك التشفير لكن بوضع قيمة السرعة سالبة ( – ) لعكس اتجاه الحركة
لتحريك القابض للإمساك بالأشياء، سوف نسمي الزر الثالث Grip
عند ضغط الزر سنضيف الأمر المتعلق بحركة محرك DC المسؤول عن حركة القابض
وتحديد منفذ التوصيل
الزر الرابع سوف نسميه Un-Grip، لتحريك القابض لإفلات الأشياء
سنضيف نفس الكود البرمجي لكن بوضع السرعة بعلامة سالبة ( – ) لعكس اتجاه حركة المحرك وبالتالي عكس حركة القابض
لمزيد من المعلومات عن الأوامر البرمجية الأخرى يمكنك الرجوع لدرس جولة حول الأوامر البرمجية
نقوم بعد ذلك بحفظ المشروع Save وتحديث البرامج الثابتة من واجهة التطبيق Firmware لتتمكن من تجربة المشروع.
عند إرسال الروبوت في مهام مختلفة قد نحتاج لمتابعة المحيط الذي يتحرك فيه الروبوت
ستقوم في هذه الخطوة بالاستفادة من كاميراة الهاتف الذكي لبث الفيديو على الحاسوب
باستخدام القطع الملحقة بروبوت Ultimate يمكن بناء مسند لهاتف محمول بالمقياس المناسب لحجم الهاتف
قم بتنزيل تطبيق Droidcam من Google Play على هاتف محمول أندرويد
سيظهر عند فتح التطبيق عنوان IP الخاص بهاتفك
ورقم المنفذ Port وعنوان المتصفح
قم بفتح الكاميرا من خلال التطبيق
على جهاز الحاسوب قم بفتح المتصفح وإدخال عنوان المتصفح Browser IP Cam Access بهذا الشكل
http://192.168.11.118 :4747/
يمكنك الآن متابعة البث لمباشر من كاميرا الهاتف المحمول على صفحة الويب
سنقوم في هذا المشروع بصنع آلة تبريد يمكن استخدامها لتبريد المشروبات باستخدام مستشعر الحرارة وقطع الكترونية أخرى.
نقوم بتوصيل مستشعر الحرارة إلى اللوحة الرئيسية عبر محول Rj25
المنفذ | القطعة الالكترونية |
منفذ4 | وحدة 7-segment |
منفذ6 | محول RJ25 |
منفذ8 | المقاومة المتغيرة |
منفذ المحركات M1 | المروحة Me 130 dc motor |
سنقوم ببرمجة المشروع بحيث يتيح لنا تعيين درجة الحرارة التي نرغب في تبريد العصير إليها عبر المقاومة المتغيرة ويتم عرضها على وحدة 7-segment
نقوم بوضع مستشعر الحرارة داخل الكوب فيقوم البرنامج بمقارنة درجة حرارة العصير بدرجة الحرارة التي قمنا باختيارها
إذا كانت أعلى (أي أسخن) يتم تشغيل المروحة للتبريد إلى أن تصل لدرجة الحرارة المطلوبة.
في البداية سنقوم بتحديد مدى قراءة المقاومة المتغيرة حيث سنستخدمها في تحديد درجة الحرارة
ننشئ متغيرًا باسم temperature ونقوم بتعيينه لقراءة قيمة المقاومة المتغيرة
نقوم بتعيين وحدة 7-segment لعرض درجة الحرارة temperature
نستخدم الأمر التالي لقراءة مستشعر درجة الحرارة
باستخدام حلقة Repeat until
نضع أمر المحرك M1 المتعلق بالمروحة ليتحرك بسرعة 100 إلى أن تصبح درجة الحرارة التي اخترناها أكبر من الحرارة التي يقرأها المستشعر
عند تبريد الكوب إلى درجة الحرارة المطلوبة تتوقف المروحة
للمزيد من المعلومات حول الكود يمكنك مراجعة درس جولة حول الأوامر البرمجية.
سنقوم في هذا المشروع بعمل مروحة ذكية تعمل عند عند الاقتراب منها لمسافة محددة وتزداد سرعتها كلما اقتربت منها أكثر
قم بتوصيل مستشعر الموجات فوق الصوتية بالمنفذ رقم 3
وقم بتوصيل المروحة (Me 130 dc motor) بأحد المنفذين المخصصة للمحركات كما هو موضح بالصورة
لاحظ أنك إذا قمت بتوصيل في المنفذ M1 على اللوحة الرئيسية فستعتمد M1 عند كتابة الكود البرمجي.
نقوم بدايةً بإنشاء متغير Distance وتعيينه لتخزين قراءة مستشعر الموجات فوق الصوتية
نقوم بإضافة جملة شرطية if.. else
لتحديد المسافة التي تبدأ عندها المروحة بالدوران وهنا اخترنا أن تكون أقل من 70 سم
ننشئ متغيرًا باسم speed ونقوم بتعيينه ليتغير قيمته وفق المسافة
أضفنا عبارة رياضية وهي أن تكون السرعة حاصل طرح المسافة من 150
وبذلك ستتغير السرعة وفق المسافة
كلما كانت المسافة صغيرة تزداد السرعة
بعد else نضع سرعة المحرك M1 تساوي صفر ليتوقف إذا كانت المسافة أكبر من 70
للمزيد من المعلومات حول الكود يمكنك الرجوع إلى درس جولة حول الأوامر البرمجية.
سنقوم في هذا المشروع بدمج عدة عناصر إلكترونية لمحاكاة إشارة المرور مثل إضاءة RGB ومحرك سيرفو ووحدة عرض 7-segment
حقيبة المخترع (Inventor Kit)
سنستخدم في هذا المشروع القطع الالكترونية التالية:
نلاحظ أن منافذ محرك السيرفو تختلف عن منافذ لوحة (Orion (RJ25 لذلك نستخدم محول RJ25 الذي يقوم بتحويل المنافذ القياسية Rj25 إلى 6 دبابيس لتتوافق مع العناصر الالكترونية الأخرى مثل محرك السيرفو في هذا المشروع.
المنفذ | القطعة الالكترونية |
منفذ 4 | وحدة عرض 7-segment |
منفذ 8 | RGB LED |
منفذ 6 | محول RJ25 |
ويتم توصيل محرك السيرفو بمحول RJ25
سنقوم ببرمجة المشروع بحيث تكون الإضاءة حمراء لمدة 10 ثوان ويكون ذراع محرك السيرفو على زاوية 180 درجة
ليمنع السيارات من العبور
يبدأ العد التنازلي يظهر على وحدة عرض 7-segment من 10 إلى 0
ثم تتحول الإضاءة إلى الأخضر ويتحرك ذراع محرك السيرفو إلى 90 درجة ليسمح للسيارات بالعبور
في البداية سننشيء متغير second ليمثل عدد الثواني في العداد
قم بتعيين قيمة المتغير second على عدد الثواني التي سيبدأ بها العد التنازلي
10هنا اخترنا أن يبدأ العداد من
لنجعل العدد يتناقص سنستخدم الأمر التالي
وليكون مقدار التناقص كل ثانية سنستخدم الأمر wait
خلال العد التنازلي نريد أن يظهر العداد على وحدة 7-segment
وكذلك تكون الإضاءة حمراء
وأن يكون الحاجز مغلقا لمنع مرور السيارات أي يكون ذراع محرك السيرفو على زاوية 180 درجة
سنضع هذه الأوامر داخل حلقة Repeat until
ستتكرر الأوامر داخل الحلقة إلى أن يصل العداد إلى الصفر أي يتحقق الشرط الذي تم وضعه في الأمر البرمجي Repeat until
عند وصول العداد إلى الصفر سنعيد تعيينه ليبدأ العد من 10 أي عند فتح الإشارة والحاجز
سنستخدم الأمر if then
ونضع الشرط إذا كانت الثواني = 0
وعند تحقق هذا الشرط نريد أن تكون الإضاءة خضراء (green=60)
ويتم فتح المزلاق أيتحرك ذراع السيرفو إلى 90 درجة
كذلك نضيف الأمر الذي يظهر العد التنازلي في وحدة عرض 7-segment
بعد مرور هذه العشر ثوان سنستخدم أمر تعيين العداد مرة أخرى ليستمر في تكرار فتح إشارة المرور وغلقها
لمزيد من المعلومات حول الأوامر البرمجية الأخرى يمكنك الرجوع إلى درس جولة حول الأوامر البرمجية
سنقوم في هذا المشروع باستخدام مستشعر الصوت الموجود في اللوحة الرئيسية Auriga لروبوت Ranger
لبرمجة روبوت يستجيب للأوامر الصوتية
يمكن أن نقول بأن مستشعر الصوت هو عبارة عن مايكروفون صغير يقوم بتحويل الصوت إلى إشارة كهربائية، ويعطي قيمة تتراوح بين 0-1023. تختلف القيمة باختلاف المحيط الذي نقوم بتشغيل الروبوت فيه
لا يستطيع مستشعر الصوت التمييز بين الكلمات لكن يستطيع التمييز بين الأصوات المرتفعة والمنخفضة التي تقع في المدى الخاص به. كلما كانت شدة الصوت أعلى كانت الإشارة الكهربائية أكثر
قبل أن نقوم بكتابة البرنامج نحتاج أولا إلى عمل اختبار صغير لمعرفة المدى الذي يقرأ فيه المستشعر، والقراءات التي يعطيها عند التصفيق أو الكلام أو أي أصوات أخرى.
نقوم أولا بتوصيل الروبوت إلى الحاسوب عن طريق الكيبل.
قم بانشاء متغير Sound
اختيار الأمر say وتعيينه على مستشعر الضوء
ووضع الأمر داخل حلقة forever
ستظهر قراءة المستشعر على الشاشة
نلاحظ أن القيمة تتغير بسرعة كبيرة جدا وبهذا يصعب تحديد أعلى قيمة وأقل قيمة، لذا سنضيف متغيرين آخرين
Max ليمثل أعلى قيمة، و Min ليمثل أقل قيمة
سنقوم بتعيين المتغيرين على قراءة مستشعر الصوت
ونقوم كذلك بتعيين المتغير Sound لقراءة مستشعر الصوت
في البداية ستكون Max = Min
داخل حلقة forever ستتغير قيمة المتغير Sound
ولتحديد أعلى وأقل قيمة نستخدم if ..then
بحيث إذا كانت قيمة sound أكبر من قيمة max
يتم إعادة تعيين قيمة max إلى هذه القيمة كأعلى قيمة
ويتم إعادة تعيين قيمة min إلى أقل قيمة تمت قراءتها في المتغير Sound
سنقوم ببرمجة الروبوت بحيث يتراجع للوراء عند التصفيق أو إعطاءه أي أمر صوتي
سنأخذ بالاعتبار القيم التي حصلنا عليها من الكود السابق، لاستخدامها في كتابة كود الروبوت الجديد
نقوم بفتح صفحة جديدة في برنامج mBlock
وانشاء متغير Sound وتعيينه لقراءة مستشعر الصوت في اللوحة الرئيسية
نقوم بإضافة شرط if then
بحيث إذا كانت قراءة مستشعر الصوت أعلى من قيمة معينة يتحرك الروبوت للخلف
لتحديد هذه القيمة نعود إلى القيم التي حصلنا عليها من الكود السابق
نلاحظ في الصورة أن قيمة max = 184 وهذه القيمة تم تسجيلها قبل إصدار أي صوت
مما يعني أنه عند التصفيق مثلا ستكون قيمة المستشعر أكبر من هذه القيمة
إذا كانت قيمة القراءة أقل، يتم تنفيذ الأوامر بعد else وهو التحرك للأمام
قم بتجربة إضافة أوامر برمجية تقوم بإضاءة LED عند التصفيق
لمزيد من المعلومات حول الأوامر البرمجية الأخرى قم بالرجوع لدرس جولة حول الأوامر البرمجية
مصارعة السومو من الفنون القتالية اليابانية القديمة، سنقوم في هذا المشروع ببرمجة الروبوت ليكون جاهزًا للمشاركة بحيث يقوم الروبوت بالبحث عن الخصم في مساحة محددة بواسطة مستشعر الموجات فوق الصوتية وعندما يجده يقوم بالهجوم على الروبوت الخصم.
mBot Kit (عدد 2)
سنقوم في هذا المشروع باستخدام مستشعر الموجات فوق الصوتية ووحدة تتبع المسار. بحيث يتحرك الروبوت على ساحة المعركة دون الخروج من الحدود المرسومة باللون الأسود باستخدام مستشعر تتبع المسار.
يعطي المستشعر قراءة تساوي 3 إذا كان على سطح أبيض وقراءة تساوي 0 إذا كان على سطح أسود، وقيم تساوي 1 أو 2 إذا كانت إحدى جهتي المستشعر على اللون الأسود والأخرى على الأبيض. لفهم كيفية عمل مستشعر وحدة المسار راجع مشروع روبوت تفادي السقوط
خلال حركة الروبوت على الطاولة يقوم بالبحث عن الخصم باستخدام مستشعر الموجات فوق الصوتية
عندما يكون الخصم على مسافة قريبة تصطدم به الموجات فوق الصوتية وترتد إلى الروبوت فيتم رصد الخصم والهجوم عليه بزيادة السرعة.
لفهم كيفية عمل مستشعر الموجات فوق الصوتية راجع مشرع الروبوت متتبع الكائنات
رصد حافة الطاولة | رصد الخصم | الفعل |
نعم | نعم | الانعطاف يمينًا أو يسارًا |
نعم | لا | الانعطاف يمينًا أو يسارًا |
لا | نعم | زيادة السرعة (هجوم) |
لا | لا | التحرك للأمام |
سنحتاج عند برمجة روبوت السومو إلى وضع الأوامر باعتبار قراءة مستشعر تتبع المسار ومستشعر الموجات فوق الصوتية.
سنقوم بدايةً بوضع مجموعة من الأوامر داخل حلقة تكرار Repeat until ، يقوم هذا الأمر بتنفيذ الأوامر التي بداخل الحلقة إلى أن يتحقق الشرط الذي يتم وضعه
وهنا قمنا باختيار الشرط أن تساوي قراءة مستشعر تتبع المسار 3
(عندما تكون القيمة 3 فذلك يعني أن كلا المستشعرين في وحدة تتبع المسار على سطح أبيض أي أن الروبوت لم يصل لحافة ساحة القتال)
الأوامر التي بداخل حلقة repeat until ستعتمد على المسافة على قراءة مستشعر الموجات فوق الصوتية ، أي إذا كان الروبوت يسير على السطح الأبيض سننتقل لاختبار شرط المسافة
وهو إذا كانت المسافة بين الروبوت والخصم أقل من 12 سم سيقوم بالهجوم عليه عن طريق زيادة السرعة إلى 255، وإن لم تكن المسافة كذلك يستمر الروبوت في الحركة للأمام بسرعة متوسطة
نعود إلى شرط مستشعر تتبع المسار
إذا تحقق الشرط أن القراءة أصغر من 3، فذلك يعني أن الروبوت لم يعد على السطح الأبيض أي وصل إلى حافة ساحة القتال
فهنا يتم تنفيذ الأوامر بعد else، وهي الحركة للخلف لمدة ثانيتين وفائدة الأمر wait أن يسمح له بالرجوع مسافة كافية تمكنه من الانعطاف
بعد أن يعود الروبوت للخلف هل ينعطف يمينا أو يسارًا؟
ليتمكن الروبوت من اتخاذ القرار
سنستخدم الأمر pick random من 1 إلى 10
وهذا الأمر يقوم في كل مرة بأخذ رقم عشوائي بين العددين اللذان تم اختيارهما
وتبعا لهذا الرقم قمنا بوضع شرط إذا كان الرقم أقل من 5 ينعطف الروبوت لليمين
وإلا فينعطف لليسار
قمنا بوضع أمر التأخير الزمني.wait ليكون لدى الروبوت زمن كافي للانعطاف
بذلك سيكون الروبوت جاهزًا للمشاركة في مسابقة السومو قم بتنزيل الكود على روبوت آخر لتبدأ المنافسة.
لمزيد من المعلومات حول الأوامر البرمجية الأخرى يمكنك مراجعة درس جولة حول الأوامر البرمجية.
سنقوم في هذا المشروع بعمل مصباح طاولة ذكي باستخدام مستشعر الحركة بحيث يضيء المصباح عند استشعار الحركة ويُطفأ عند عدم وجود حركة
سنستخدم في هذا المشروع القطع التالية
المنفذ | القطعة الالكترونية |
منفذ3 | RGB LED |
منفذ4 | مستشعر الحركة PIR |
منفذ6 | المقاومة المتغيرة Potentiometer |
سنقوم ببرمجة المشروع بحيث يمكن التحكم بإضاءة RGB بطريقتين، إما التحكم بشدة الإضاءة عن طريق المقاومة المتغيرة وإما باستخدام مستشعر الحركة بحيث يضيء المصباح عند استشعار الحركة ويُطفأ عند عدم وجود حركة.
سنقوم بدايةً بإنشاء متغيرين
الأول ولنسميه LEDcount للتحكم بالإضاءة التدريجية حيث تحتوي وحدة RGB على 4 LED
وسنسمي المتغير الآخر Brightness للتحكم في شدة الإضاءة
يعطي مستشعر الحركة قيمتين إما 0 عند عدم وجود حركة أو 1 عند رصد الحركة
نضع جملة شرطية if then بحيث عند رصد الحركة (قراءة المستشعر = 1) تتم إضاءة RGB بشكل تدريجي
يتم تعيين المتغير LEDcount على القيمة 0
نختار أن يتم تغير القيمة بقيمة 1 تدريجيا لتتم الإضاءة تدريجيا
للتحكم في شدة الإضاءة عبر المقاومة المتغيرة potentiometer
نستخدم الأمر البرمجي if…the.. else
ونقوم بوضع شرط بحيث يحدد أقل وأعلى قيمة للمقاومة
أقل قيمة = 0 ، أعلى قيمة = 975
نقوم بتعيين قيمة المتغير Brightness لقراءة قيمة المقاومة المتغيرة potentiometer
أعلى شدة لإضاءة RGB تساوي 255
لذلك سنقوم بقسمة قيمة المقاومة على 4 لنحصل على قيم بين 0 – 255
ومن ثم تعيين قيمة شدة LED وفق قيمة المتغير Brightness
بعد الأمر else نعين الإضاءة على 0 أي مطفأة
للمزيد من المعلومات حول الكود يمكنك الرجوع لدرس جولة حول الأوامر البرمجية