سلطنة عمان
وزارة ال رتبية و التعليم
المديرية العامة لل رتبية و التعليم بمحافظة فظفار
دائرة التقويم ال رتبوي
ورشة تدريبية
بناء و برمجة روبوت ev3
و تطبيقاته يف مسابقات الروبوت بالسلطنة
ورقة العمل الرابعة
مسابقة جمع الكرات و المسابقة الحرة
اعداد و تقديم :مريم سعيد ع يل باعوين /قسم الابتكار و الأولمبياد العل يم
عرض :
دليل المسابقة الحرة و دليل جمع الكرات
فيديوهات للمسابقات
حساسات و أوامر قد تحتاجها في مثل هذه المسابقات :
أولا :
احتساب عدد الدورات الازمة لقطع مسافة معينة :
تلاحظ على اطار العجلة أن نصف قطر العجلة الموجودة في حقيبة روبوت ev3تساوي 2.8
سم و منه و باستخدام قانون محيط الدائرة فإن محيط هذه العجلة = 17.6سم
إذا فالدورة الواحدة للعجلة تقطع مسافة 17.6سم
عندما تريد أن تقطع مسافة 130سم مثلا بهذه العجلات
فإن عدد الدورات اللزمة = المسافة المطلوبة ÷ 17.6
= 17.6 ÷ 130
= 7.4
عند العمل في بعض المهام مثل جمع الكرات ، fll ،المسابقات الحرة ،قد تحتاج المعلومة
السابقة .
حساس الزوايا : Gyro Sensor
يكتشف مستشعر الانعطاف الحركة الدورانية .إذا أدرت مستشعر الانعطاف في اتجاه الأسهم الموجودة على علبة
المستشعر ،يمكن للمستشعر عندها اكتشاف معدل الدوران مستخد ًما وحدة القياس درجة في الثانية .ويمكنك استخدام
معدل الدوران لاكتشاف -على سبيل المثال لا الحصر -وقت دوران أحد أجزاء الروبوت أو وقت سقوط الروبوت.
علاوة على ذلك ،يحتفظ مستشعر الانعطاف بإجمالي زاوية الدوران بالدرجات .يمكنك استخدام زاوية الدوران لاكتشاف -
على سبيل المثال لا الحصر -المسافة التي دارها الروبوت.
بيانات مستشعر الانعطاف
يوفر مستشعر الانعطاف البيانات التالية:
ملاحظات النوع البيانات
زاوية الدوران بالدرجات عددي الزاوية
مقاسة من آخر مرة تم فيها إعادة التعيين .إعادة التعيين باستخدام الوضع ”إعادة تعيين”
للقالب ”مستشعر الانعطاف” .
معدل الدوران بوحدة القياس درجة في الثانية .عددي المعدل
التلميحات والنصائح
لا يمكن لمستشعر الانعطاف سوى اكتشاف الحركة حول محور دوران واحد .وتشير الأسهم الموجودة على •
علبة المستشعر إلى هذا الاتجاه .تأكد من تركيب المستشعر على الروبوت في الاتجاه الصحيح لقياس الدوران
في الاتجاه المطلوب .
يمكن أن تكون قيمتا الزاوية والمعدل موجبتين أو سالبتين .ينتج عن الدوران في اتجاه حركة عقارب الساعة •
قيمة موجبة ،بينما ينتج عن الدوران عكس اتجاه حركة عقارب الساعة قيمة سالبة .
عند توصيل مستشعر الانعطاف بوحدة البناء ، EV3يجب إحكام تثبيته للحد من ”الانحراف ” •
قد ”تنحرف” الزاوية بمرور الوقت وتصبح أقل دقة .للحصول على أفضل النتائج ،أعد تعيين الزاوية باستخدام •
الوضع ”إعادة تعيين” للقالب ”مستشعر الانعطاف ”قبل كل حركة تريد قياس زاويتها .
كما يمكن لمستشعر دوران المحرك قياس الدوران بالدرجات ،ولكن ذلك يقتصر على الجزء الد ّوار في •
المحرك .
أمثلة على استخدام مستشعر الانعطاف
ترد فيما يلي أمثلة توضح كيفية استخدام مستشعر الانعطاف في البرنامج.
المثال :1الدوران بزاوية معينة
يجعل هذا البرنامج الروبوت يدور مقدار 90درجة ناحية اليسار .ويستخدم الروبوت القالب ”الانتظار ”في الوضع
”مستشعر الانعطاف -تغيير – الزاوية” للانتظار إلى أن تتغير زاوية الدوران بمقدار 90درجة.
التلميحات والنصائح
تلميح :بما أن البرنامج المبين أعلاه يستخدم الوضع ”تغيير” للقالب ”الانتظار ”فإنه يقيس مقدار التغير في الزاوية
بالنسبة لبداية القالب ”الانتظار” .ولذلك ،فليس من الضروري إعادة تعيين مستشعر الانعطاف قبل الحركة.
المثال :2عرض مقياس معدل الدوران
يجعل هذا البرنامج الروبوت يعرض معدل الدوران بيانيًا .يماثل الوضع ”مستشعر الانعطاف ”القيمة العددية لمعدل
الدوران عل ًما بأن هذه القيمة تُستخدم لتغيير عرض المستطيلات على شاشةEV3.
قوالب وأوضاع مستشعر الانعطاف
يعرض الجدول التالي جميع قوالب البرمجة والأوضاع التي يمكنك استخدامها مع مستشعر الانعطاف.
الوضع القالب الاستخدام
الانتظار ينتظر إلى أن يبلغ معدل الدوران أو زاوية الدوران قيمة معينة .مستشعر الانعطاف -
مقارنة
الانتظار ينتظر إلى أن يتغير معدل الدوران أو زاوية الدوران بمقدار محدد .مستشعر الانعطاف -
تغيير
الحركة مستشعر الانعطاف يكرر تسلسل قوالب إلى أن يبلغ معدل الدوران أو زاوية الدوران قيمة
الحلقية معينة.
يختار بين سلسلتي قوالب حسب زاوية الدوران أو معدل الدوران .مستشعر الانعطاف تبديل
مستشعر قياس يقيس زاوية الدوران و/أو معدل الدوران إلى جانب إخراج النتيجة
الانعطاف على سلك بيانات ”عددي”.
مستشعر مقارنة يقارن بين زاوية الدوران أو معدل الدوران وقيمة حدية ،ويخرج
الانعطاف النتيجة على سلك بيانات ”منطقي”.
مستشعر إعادة تعيين يعيد تعيين زاوية الدوران إلى صفر.
الانعطاف
زاوية الانعطاف تسجيل البيانات
معدل الانعطاف
معايرة حساس الدوران ( الانعطاف ):
العديد من مستخدمي حساس الزوايا يعانون من عدم دقة قراءة الحساس للقيم وأيضاً سرعة
تغيرها ،والبعض يعتقد أن عمل Restللحساس باستخدام أمر الـ Rest
يقوم بحل المشكله ولكن هذا غير صحيح حيث أنه فقط يقوم بإرجاع قيمة الزاويه بصفر
وسرعان ماتتغير مرة اخرى .
ولجعل حساس Gyroأكثر دقه لابد من عمل معايره له ولعمل ذلك هناك عدة نصائح يجب
اتباعها وهي كالتالي:
.1عند تشغيل الروبوت تأكد من أن الروبوت وحساس الزوايا في وضع ومكان ثابت
وغير متحرك وذلك لتهييئ الحساس للمعايره وأخذ قيم حقيقيه.
.2عدم فصل السلك الخاص بربط حساس الـ Gyroبالمعالج وذلك عند تشغيل المعالج
أو بعد التشغيل.
.3عمل برنامج خاص بمعايرة الحساس ووضعه قبل كل برنامج تريد استخدام حساس الـ
Gyroفيه ،كما هو موضح في الأسفل :
الأمر الأول :أمر تشغيل وقراءة قيم حساس الزوايا في وضع القياس angle and rateوهو
لقرائة القيم لدوران الزاويه بالدرجات ولدوران المعدل بالدرجات لكل ثانيه.
الأمر الثاني :أمر الإنتظار لنصف ثانيه
الأمر الثالث :أمر الإنتظار حتى وصول قيمة حساس الزوايا لصفر .
المتغيرات :
يتيح لك قالب ”المتغير” قراءة متغير وكتابته في البرنامج .ويمكنك كذلك إنشاء متغير جديد وتسميته.
المتغير عبارة عن موقع في ذاكرة وحدة البناء EV3قادر على تخزين قيم بيانات .يمكنك الكتابة في متغير لتخزين قيمة
بيانات .يمكنك القراءة من المتغير للوصول إلى القيمة المخزنة لاحقًا في البرنامج.
لكل متغير نوع واسم .الأنواع المختلفة هي ”عددي” و”منطقي” و”النص” و”مصفوفة عددية” و”مصفوفة منطقية”.
يمكنك اختيار اسم المتغير المستخدم لتحديد المتغير.
راجع ”أنواع البيانات ”لمزي ٍد من المعلومات حول أنواع المتغير المختلفة.
يمكن تغيير قيمة متغير أثناء تشغيل برنامج .في كل مرة تكتب في متغير ،يتم محو أي قيمة سابقة واستبدالها بالقيمة
الجديدة .على سبيل المثال ،يمكنك استخدام متغير يُسمى ” ”Max Lightلمتابعة أعلى قياس من قياسات شدة الضوء
التي قاسها الروبوت من مستشعر الألوان حتى الآن .وفي كل مرة يكتشف فيها الروبوت قيمة أعلى ،يمكن له كتابة
القيمة الجديدة في المتغير”Max Light”.
إضافة متغير جديد
محدد الوضع
محدد المتغير
إدخال القيمة
لإضافة متغير جديد إلى مشروعك:
أدرج قالب ”المتغير” أو حدده 1- .
استخدم محدد الوضع لاختيار الوضع ”كتابة 2- ”.
اختر نوع المتغير (”عددي” أو ”منطقي” أو ”النص” أو ”مصفوفة عددية” أو ”مصفوفة منطقية 3- ”.
انقر فوق ”حقل نص القالب” الموجود على الجزء العلوي من القالب وحدد ”إضافة متغير” .ويظهر عندئذ 4-
مربع الحوار ”متغير جديد” كما هو موضح أدناه .
في مربع الحوار ”متغير جديد” ،أدخل اس ًما للمتغير وانقر ”موافق” .ويمكن أن يتكون اسم المتغير من حرف 5-
واحد أو كلمة أو عدة كلمات أو أي تسلسل حروف وأرقام .
التلميحات والنصائح
عند اختيار اسم قصير للمتغير يصبح من السهل رؤية اسم المتغير كاملاً عند استخدامه في البرنامج • .
اختر اس ًما يساعدك على تذكر معنى المتغير وأوجه الاختلاف بينه وبين المتغيرات الأخرى في البرنامج • .
بمجرد إضافة المتغير ،فإنه يكون متا ًحا للاستخدام في أي من البرامج التي يشتمل عليها المشروع • .
بعد إضافة المتغير ،يمكنك استخدام قالب ”المتغير” في الوضع ”كتابة” لإدخال ”القيمة ”أولية للمتغير 6- .
الكتابة في متغير
محدد الوضع
اسم المتغير
الإدخال
كتابة
يتيح لك الوضع ”كتابة” اختيار متغير قد أضفته بالفعل إلى البرنامج (راجع ”إضافة متغير جديد)”إضافة إلى تخزين
قيمة فيه.
للكتابة في متغير:
استخدم محدد الوضع لاختيار الوضع ”كتابة 1- ”.
اختر نوع المتغير في ”النوع 2- ”.
انقر فوق حقل نص القالب لعرض القائمة المنبثقة 3- .
حدد اسم المتغير الذي تريد استخدامه 4- .
التلميحات والنصائح
يجب اختيار نوع المتغير من محدد الوضع قبل اختيار اسم المتغير من القائمة المنبثقة .ولا تدرج القائمة المنبثقة سوى
المتغيرات التي تطابق النوع المحدد.
يمكنك الآن تخزين قيمة في المتغير باستخدام الدخل ”القيمة ” .يمكنك إدخال القيمة مباشرة في الدخل 5-
”القيمة ”أو يمكنك استخدام ”سلك البيانات ”.
التلميحات والنصائح
يمكنك الكتابة في متغير لمرات عديدة بالقدر المطلوب ،إلاّ أنه لا يتم حفظ سوى القيمة الأخيرة .عند الكتابة في متغير؛ يتم
محو قيمة المتغير السابقة واستبدالها بالقيمة الجديدة.
القراءة من متغير
محدد الوضع
اسم المتغير
الإخراج
قراءة
يتيح لك الوضع ”قراءة” اختيار متغير تمت إضافته سابقًا إلى البرنامج (راجع ”إضافة متغير جديد)”والحصول على
القيمة المخزنة فيه.
للقراءة من متغير:
استخدم محدد الوضع لاختيار الوضع ”قراءة” ونوع المتغير 1- .
انقر فوق حقل النص بالجزء العلوي من القالب لعرض القائمة المنبثقة وتحديد اسم المتغير الذي تريد 2-
استخدامه .
التلميحات والنصائح
يجب اختيار نوع المتغير من محدد الوضع قبل اختيار اسم المتغير من القائمة المنبثقة .ولا تدرج القائمة المنبثقة سوى
المتغيرات التي تطابق النوع المحدد.
يمكنك الآن الحصول على قيمة المتغير من الدخل ”القيمة ”واستخدامها في البرنامج بالاستعانة ”سلك 3-
البيانات ”.
التلميحات والنصائح
عند القراءة من متغير لم يسبق أن كتبت فيه قيمة خطية ،فإن النتيجة ستكون 0للنوع ”عددي” ،و”خطأ” للنوع
”منطقي” ،ونص فارغ للنوع ”النص” ،ومصفوفة فارغة للنوعين ”مصفوفة عددية” و”مصفوفة منطقية”.
أمثلة استخدام المتغيرات
المثال :1تخزين قيمة واستخدامها لاحقًا
يستخدم هذا البرنامج قالب من قوالب ”المتغير” في الوضع ”كتابة” لتخزين قيمة بيانات مستشعر البيانات في المتغير
المسمى ” ”Lightومن ثم يستخدم قالبًا آخ ًرا في الوضع ”كتابة” للحصول على القيمة واستخدامها لاحقًا في البرنامج.
البرنامج مصمم لتحريك الروبوت إلى الأمام والعودة .يتوقف الروبوت أثناء عودته فوق لون لا تقل دكنته عن دكنة اللون
الذي بدأ منه.
التحرك الذكي :
التحرك الذكي هو أن نجعل الروبوت يقيس مقدار الحركة التي تحركها من نقطة بداية ليكون
باسطاعته العودة إليها مرة اخرى.
على سبيل المثال في مسابقات الروبوت نحتاج أحياناً إلى أن نتحرك من القاعدة لأداء مهمة
معينة ومن ثم العودة إلى القاعدة مرة اخرى فبدلاً من حساب المسافة أو عدد الدرجات
المطلوبة للرجوع إلى القاعدة مرة اخرى نستخدم التحرك الذكي للرجوع إلى مكان الإنطلاقة.
يتم استخدام الأمر Motor Rotationمن قائمة الأدوات Sensorوذلك لقياس التحرك
للمحرك إما بالدرجات أو الدورات أو قياس قوة اندفاع المحرك.
التحدي : 1في هذا التحدي اجعل الروبوت يتحرك بمقدار عشوائي من نقطة بداية ومن ثم
العودة إلى نقطة البداية وذلك باستخدام التحرك الذكي؟
الأمر الأول :قمنا بوضع أمر متغير عددي من نوع كتابة وكتبا فيه المقدار (0استخدمنا
المتغير وذلك لتخزين قيمة دوران المحرك بعد قياسه باستخدام الأمر Motor Rotation
فقمنا في البداية بتصفير المتغير)
الأمر الثاني :قمنا بعمل Resetللأمر Motor Rotationللمحرك Bوذلك لضمان عدم
تسجيله لأي دورات أو درجات سابقة( غالباً يتم عمل Resetفي البداية لجميع أوامر قياس
الحساسات)
الأمر الثالث :استخدمنا الأمر العشوائي Randomمن نوع عددي ووضعنا في القيمة
الصغرى 1والقيمة العضمى 3وقمنا بتوصيل القيمة الخارجه منه في الأمر الرابع في مقدار
الدورات.
الأمر الرابع :هو أمر التحرك بالدورات للأمام ولكن مقدار الدورات هو مقدار عشوائي مابين
1إلى 3دورات في كل مره يتم تشغيل البرنامج يأخذ قيمة معينة لدورات الروبوت مابين 1و
.3
الأمر الخامس :أمر الإنتظار لمدة ثانية.
الأمر السادس :أمر Motor Rotationفي وضع القياس للدورات للمحرك Bلقياس عدد
الدورات للمحرك Bمنذ انطلاق الروبوت.
الأمر السابع :خزنا في المتغير القيمة التي قاسها أمر Motor Rotationللمحرك Bمنذ
انطلاق الروبوت وحتى توقفه( .المتغير من نوع عددي في وضع الكتابة)
الأمر الثامن :قرأنا القيمة المخزن في المتغير وقمنا بتوصيلها إلى الأمر التاسع في مقدار
الدورات.
الأمر التاسع :أمر التحرك بالدورات ولكن بالقيمة المخزنة في المتغر والتي قاسها أمر
،Motor Rotationنلاحظ أن التحرك للخلف لأن مقدار القوة ب 50-ونلاحظ أن الروبوت
رجع إلى نقطة البداية (نقطة انطلاقته)
التحدي : 2قم بعمل برنامج ليقوم الروبوت بالتحرك والتقاط جسم أمامه والعوده به إلى نقطة
البداية ؟
في البداية لابد من تصميم ذراع لإلتقاط الجسم وذلك باستخدام الـMedium Motor .
لأمر الأول :قمنا بوضع أمر متغير عددي من نوع كتابة وكتبا فيه المقدار (0استخدمنا المتغير
وذلك لتخزين قيمة دوران المحرك بعد قياسه باستخدام الأمر Motor Rotationفقمنا في
البداية بتصفير المتغير)
الأمر الثاني :قمنا بعمل Resetللأمر Motor Rotationللمحرك Bوذلك لضمان عدم
تسجيله لأي دورات أو درجات سابقة( غالباً يتم عمل Resetفي البداية لجميع أوامر قياس
الحساسات)
الأمر الثالث :هو أمر التحرك للأمام بمقدار مفتوحON.
الأمر الرابع :أمر الإنتظار لحساس المسافه بحيث إذا كانت المسافة بينه وبين الجسم أقل من 5
سم يتوقف الروبوت.
الأمر الخامس :أمر التوقف للمحركات BوC.
الأمر السادس :أمر تنزيل الذراع لإلتقاط الجسم وذلك عن طريق تحريك المحرك الأسوط
بالمقدار المناسب على سبيل المثال 150درجة.
الأمر السابع :أمر Motor Rotationفي وضع القياس للدورات للمحرك Bلقياس عدد
الدورات للمحرك Bمنذ انطلاق الروبوت.
الأمر الثامن :خزنا في المتغير القيمة التي قاسها أمر Motor Rotationللمحرك Bمنذ
انطلاق الروبوت وحتى توقفه( .المتغير من نوع عددي في وضع الكتابة)
الأمر التاسع :قرأنا القيمة المخزن في المتغير وقمنا بتوصيلها إلى الأمر التاسع في مقدار
الدورات.
الأمر العاشر :أمر التحرك بالدورات ولكن بالقيمة المخزنة في المتغر والتي قاسها أمر
،Motor Rotationنلاحظ أن التحرك للخلف لأن مقدار القوة ب 50-ونلاحظ أن الروبوت
رجع إلى نقطة البداية (نقطة انطلاقته)
الأمر الحادي عشر :أمر رفع الذراع لوضع الجسم في منطقة البداية وذلك عن طريق تحريك
المحرك الأوسط حركة عكسية ليرتفع نلاحظ أن الـPower -50.
تصميم الأذرع و الرافعات :
يعتبر المحرك المتوسط مناسبا للأذرع و الرافعات و نواقع الحركة و تعليمات العمل عليه
شبيه تماما بتعليمات و إمكانيات المحرك الكبير كما يمكن الاستعانة بالمحرك الكبير لتأدية
نفس المهام و أقصد تصميم الأذرع للقبض على جسم أو الرافعات او ناقلات الحركة
هنا ينتقل الحديث الى استخدام التروس و تركيبها لتناسب المهمه المطلوبة لتحويل عملية
دوران المحرك المعتادة الى عملية رفع و خفض او فتح ذراع و غلقها او نقل حركة من
محور الى آخر حسب المهمة المطلوبة ،و تعرض تفاصيل اكثر في المستندات المرفقة
الأخرى .
المراجع
-1تعليمات برنامج .LEGO MINDISTORM EV3
-2دليل المستخدم لبرنامج .LEGO MINDISTORM EV3
-3الدروس المتاحة عبر .www.lego.com:
-4الدروس المتاحة عبرev32014.blogspot.com :