جولة حول الأوامر البرمجية

 

يتواصل البشر فيما بينهم بلغات مختلفة مثل العربية والانجليزية وغيرها
وللتواصل مع الروبوتات نحتاج كذلك إلى لغات برمجة ومن أبسط لغات البرمجة المرئية هي لغة سكراتش Scratch التي سنستخدمها في برنامج mBlock لبرمجة روبوتات MakeBlock.

 

mblock-programming-blocks

 

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

 

الأوامر البرمجية

تنقسم الأوامر البرمجية في برنامج mBlock  إلى عدة أقسام منها ما هو متعلق بالحركة أو الأصوات أو التحكم وغيرها

والتي تمكننا من برمجة الرسوم المتحركة والألعاب التفاعلية.

mblock-programming-blocks

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

mblock-programming-blocks

سنستعرض الآن كل قسم وأكثر الأوامر البرمجية استخدامًا.

 

القسم الأول: البيانات Data and Blocks

 

mblock-programming-blocks

 

mblock-programming-blocks
mblock-programming-blocks
يستخدم هذا الأمر لإنشاء المتغيرات  وتعيين قيمة المتغير

والمتغير يمكن تشبيهه بوعاء لتخزين البيانات مثل إنشاء متغير باسم  Light يقوم بتخزين قراءة مستشعر الضوء

mblock-programming-blocks
تعيين قيمة للمتغير
mblock-programming-blocks
تغيير قيمة المتغير بمقدار معيّن
mblock-programming-blocks
إظهار أو إخفاء قيمة المتغير

 

 

القسم الثاني: أوامر التحكم Control

mblock-programming-blocks

 

mblock-programming-blocks
يستخدم الأمر البرمجي wait لإضافة تاخير زمني بين أمرين برمجين
mblock-programming-blocks
يقوم هذا الأمر بتكرار الأوامر البرمجية التي توضع داخله عدد محدد من المرات
mblock-programming-blocks
 If.. then
يقوم هذا الأمر بالتحقق من الشرط، إذا كان الشرط صحيحا، سيتم تنفيذ التعليمات البرمجية داخل  هذا الـ Block ، وإذا لم يتحقق الشرط لن يتم تنفيذها.If.. then.. else
يقوم هذا الأمر بالتحقق من الشرط، إذا كان الشرط صحيحا، سيتم تنفيذ التعليمات البرمجية داخل  Block if ، وإذا لم يتحقق الشرط يتم تنفيذ  التعليمات البرمجية داخل else Block .
mblock-programming-blocks
 يتوقف البرنامج عند الأمر البرمجي wait until حتى يتحقق الشرط الذي تم تحديده داخل الأمر Block
عند تحقق الشرط يكمل البرنامج تنفيذ الأوامر التالية في الكود
mblock-programming-blocks
 يتم تكرار الأوامر البرمجية التي توضع بداخل الأمر Repeat until حتى يتحقق الشرط الذي تم تحديده
عند تحقق الشرط ينتقل لتنفيذ الأوامر التالية في الكود

 

القسم الثالث: أوامر العمليات Operators

mblock-programming-blocks

 

mblock-programming-blocks
مجموعة الأوامر المتعلقة بالعمليات الحسابية
(الجمع، الطرح ، الضرب، القسمة)
mblock-programming-blocks
Pick a random
لاختيار رقم عشوائي من بين قيمتين
مثلا بين 1 و 10
سيختار البرنامج كل مرة رقما مختلفا بين هاتين القيمتين
mblock-programming-blocks
أكبر من .. أصغر من .. يساوي
تستخدم الأوامر البرمجية للمقارنة بين قيمتين مختلفتين
mblock-programming-blocks
عند استخدام And
يتم تنفيذ الكود البرمجي التالي إذا تحقق كلا الشرطين
mblock-programming-blocks
عند استخدام or
يتم تنفيذ الكود البرمجي التالي إذا كان أحد الشرطين صحيحا
mblock-programming-blocks
يتم استخدامه لعكس الحالة المنطقية للمعامل
إذا كان الشرط صحيحا فإن العامل المنطقي not يجعله خاطئا

القسم الرابع: أوامر الروبوت Robot

في هذا القسم تظهر الأوامر وفق نوع الروبوت الذي تم اختيار من قائمة Boards

ونوع الامتداد من قائمة Extensions

mblock-programming-blocks

 

 

mblock-programming-blocks
يشير هذا الأمر البرمجي Block إلى أن البرنامج سيتم ترجمته
إلى كود أردوينو وتحميله على لوحة mCoreعند اختيار نوع الروبوت mBot.
ويختلف مسمى هذا الأمر Block وفقًا لنوع لوحة الروبوت التي تستخدمها وتقوم باختيارها من قائمة Board.
mblock-programming-blocks
يقوم هذا الأمر البرمجي بإعطاء الأمر لجميع محركات الروبوت بالحركة إما للأمام أو الخلف أو لليمين أو اليسار
وكذلك تحديد السرعة
mblock-programming-blocks
يستخدم لتحديد اتجاه وسرعة أحد المحركات M1 المحرك الأول M2المحرك الثاني
عند اختيار السرعة قيمة موجبة (100)
يتحرك للأمام
عند اختيار قيمة سالبة ( -100 ) يتحرك للخلف
mblock-programming-blocks
يتم عبر هذا الأمر البرمجي التحكم بالإضاءة RGB LED المدمجة في اللوحة الرئيسية وشدة الإضاءة ودمج الألوان
mblock-programming-blocks يستخدم هذا الأمر البرمجي عند توصيل RGB LED خارجية باللوحة الرئيسية ويتم تحديد رقم منفذ التوصيل
mblock-programming-blocks
يستخدم الأمر البرمجي play note لإصدار الأصوات مثل التنبيهات والنغمات عبر الطنان الكهربائي (Buzzer)المدمج في اللوحة الرئيسية
mblock-programming-blocks
يستخدم لقراءة مستشعر الضوء المدمج في اللوحة الرئيسية
mblock-programming-blocks
يستخدم عند توصيل مستشعر ضوء خارجي باللوحة الرئيسية بأحد المنافذ
وتحديد وضع التشغيل إما On أو Off لإغلاقه
mblock-programming-blocks
يستخدم لبرمجة المفتاح (push button) المدمج في اللوحة الرئيسية
تحت هذا الأمر يتم وضع الأوامر البرمجية التي يطلب من البرنامج تنفيذها عند ضغط المفتاح
mblock-programming-blocks
يستخدم هذا الأمر لقراءة مستشعر الموجات فوق الصوتية
ويتم تحديد المنفذ الذي تم توصيل المستشعربه
mblock-programming-blocks
يستخدم هذا الأمرلقراءة مستشعر تتبع المسار وتحديد منفذ توصيل المستشعر

 

 

رفع الكود على لوحة الروبوت

 

عند الانتهاء من بناء الكود البرمجي الخاص بك قم بتوصيل الروبوت عبر كيبل USB واختيار رقم المنفذ الخاص بالروبوت

mblock-programming-blocks

 

قم باختيار القائمة Edit ثم Arduino mode

mblock-programming-blocks

سيظهر الكود بلغة الأردوينو في يمين الشاشة، قم باختيار Upload to Arduino  لرفع الكود على الروبوت

mblock-programming-blocks



مشروع الاتصال اللاسلكي IR

 

تحتوي لوحة التحكم  mCore على LED (مُرسل IR Emitter) تقوم بإرسال أشعة تحت حمراء تحمل المعلومات المراد إرسالها
وتحتوى اللوحة كذلك على عنصر مستقبل لهذه الأشعة (IR Receiver).
سنقوم في هذا الدرس بعمل اتصال لاسلكي بين لوحتين mCore بحيث يقوم الروبوت الأول بالتوقف عند الحواجز وإرسال أمر إلى الروبوت الآخر بالتوقف أيضًا.

mbot-ir-communication

 

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

 

mbot-ir-communication

mBot Kit (عدد 2)

الاتصال عبر الأشعة تحت الحمراء IR Communication

 

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

 

mbot-ir-communication

 

تحتوي مجموعة الأوامر البرمجية لروبوت mBot على أمرين متعلقين بالاتصال اللاسلكي

mbot-ir-communication

الروبوت المُرسل

 

يتم تعيين أحد الروبوتات كمُرسل
وكتابة الرسالة داخل الأمر البرمجي send mBot’s message

mbot-ir-communication

 يكفي أن تحتوي الرسالة على أحد الأحرف ويجب أن تكون قيمة ثابتة حيث لا يمكن للروبوت إرسال قيمة متغيرة (مثل قراءة مستشعر) كما لا يمكن للروبوت المستقبل استخدام القيم المتغيرة لآداء وظائف أخرى

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

بدايةً نقوم بوضع أمر الحركة للأمام داخل حلقة  forever وإضاءة LED على وضع الإطفاء
سيتحرك الروبوت للأمام فور تشغيله

mbot-ir-communication

نقوم بإنشاء متغير Distance وتعيينه لقؤاءة مستشعر الموجات فوق الصوتية

mbot-ir-communication

نقوم بإضافة شرط (if then)لتحديد المسافة التي يتوقف عندها الروبوت إذا واجه أحد الحواجز
إذا كانت المسافة بين الروبوت والحاجز أقل من 20 يتوقف الروبوت (السرعة صفر) ويرسل رسالة عبر الأشعة تحت الحمراء IR
ويعطي إضاءة LED باللون الأحمر  لتتم معرفة أن الروبوت أرسل رسالة

الكود البرمجي للروبوت المُرسل

 

mbot-ir-communication

 

يجب وضع الأوامر البرمجية المتعلقة بالاتصال اللاسلكي داخل loop ليتم إرسال واستقبال الرسائل في نفس الوقت

ملاحظة: إذا قمت بوضع الأمر البرمجي للإرسال داخل حلقة Repeat لإرسال رسائل متتالية سيتوقف الروبوت الآخر عن الاستجابة بعد فترة ، لتفادي ذلك قم بإضافة تأخير زمني بين إرسال الرسائل باستخدام الأمر wait

mbot-ir-communication

 

الروبوت المستقبل

 

تتغير وظيفة الروبوت المُستقبل عند استلام الرسالة التي يرسلها الروبوت الأول
يجب كتابة الرسالة داخل علامتي تنصيص double quote  ليعمل البرنامج بشكل صحيح

mbot-ir-communication

سنستخدم الجملة الشرطية if ونضع بداخلها مجموعة الأوامر التي يقوم  بها الروبوت المُستقبل عند استلام الرسالة
أي إذا استلم الروبوت الرسالة من الروبوت الأول  (المُرسل) سيتم تنفيذ الأوامر البرمجية المبنية على هذه الرسالة
في هذا المشروع سنقوم ببرمجة الروبوت المُستقبِل على أن يتحرك للأمام إلى أن يستقبل رسالة من الروبوت الأول فيتوقف ويعطي وميض ضوئي أخضر

 

برمجة الروبوت المستقبِل

 

بدايةً نقوم بوضع أمر الحركة للأمام داخل حلقة  forever وإضاءة LED على وضع الإطفاء
سيتحرك الروبوت للأمام فور تشغيله

mbot-ir-communication

نقوم بإضافة شرط if else
بحيث إذا استقبل الروبوت الرسالة من الروبوت الأول (a) يقوم بتنفيذ الأوامر التالية في الكود
وهي التوقف عن الحركة باستخدام أمر الحركة واختيار السرعة 0

mbot-ir-communication

لإعطاء وميض ضوئي أخضر نقوم بوضع أمر إضاءة LED
واختيارقيمة معينة للون الأخضر
ثم وضع نفس الأمر على وضع الإطفاء (جميع الألوان على القيمة 0)
ووضع أمر التأخير الزمني wait بينهم لنتمكن من ملاحظة الوميض

mbot-ir-communication

بعد الأمر else أي إذا لم يستقبل الروبوت رسالة من الروبوت الأول
يعاود الحركة ويطفئ إضاءة LED

mbot-ir-communication

 

الكود البرمجي للروبوت المستقبِل

 

mbot-ir-communication

 

لمعلومات أكثر حول الأوامر البرمجية الأخرى التي تم استخدامها في الكود راجع درس جولة حول الأوامر البرمجية.