ورقاتورقات تعليمية
تسجيل الدخولإنشاء حساب
درس

شرح درس التحكم في الروبوت ثاني متوسط الفصل الثاني

المستشعر يمكّن الروبوت من الإحساس بما حوله، فنكتب برنامجًا يقرأ قيمته ويقرر باستخدام الشرط ⁦if⁩ أو الحلقة ⁦while⁩ ما يفعله الروبوت.

المرحلة
المتوسطة
المادة
المهارات الرقمية
وقت القراءة
15 دقائق
الاختبار
متاح

🎯أهداف الدرس

  • يراجع أوامر الحركة والدوران ويضبط سرعة الروبوت.
  • يتعرف مستشعرات الروبوت (المسافة واللون أسفل الروبوت والمصد).
  • يستخدم ⁦if⁩ مع قيمة المستشعر لاتخاذ قرار.
  • يستخدم الحلقة ⁦while⁩ لتكرار الحركة حتى يتحقق شرط.
  • يوقف الروبوت عند لون معين أو عند اقتراب جدار.

💡المفهوم الأساسي

المستشعر يمكّن الروبوت من الإحساس بما حوله، فنكتب برنامجًا يقرأ قيمته ويقرر باستخدام الشرط ⁦if⁩ أو الحلقة ⁦while⁩ ما يفعله الروبوت.

شرح الدرس

في الصف الأول المتوسط حركنا الروبوت الافتراضي في بيئة VEXcode VR بلغة بايثون بأوامر ثابتة، فكان ينفذ ما نكتب دون أن يرى ما أمامه. اليوم نعطيه عيونًا، فيقرأ المستشعرات ويتخذ قراره بنفسه.

انتبه

الأوامر قد تختلف قليلًا بين إصدارات المنصة، فإن ظهر لك خطأ في اسم أمر فراجع قائمة الأوامر في المنصة.

مراجعة الحركة والسرعة

  • الحركة للأمام: الأمر ⁦drivetrain.drive_for(FORWARD, 200, MM)⁩ يحرك الروبوت مسافة ٢٠٠ ملم.
  • الدوران: الأمر ⁦drivetrain.turn_for(RIGHT, 90, DEGREES)⁩ يدير الروبوت ٩٠ درجة يمينًا.
  • السرعة: الأمر ⁦drivetrain.set_drive_velocity(50, PERCENT)⁩ يضبط السرعة على نصف أقصى سرعة.
  • الحركة المستمرة: الأمر ⁦drivetrain.drive(FORWARD)⁩ يحرك الروبوت دون توقف حتى نوقفه بالأمر ⁦drivetrain.stop()⁩.
  • الانتظار: الأمر ⁦wait(1, SECONDS)⁩ يجعل البرنامج ينتظر ثانية.
# نص
drivetrain.set_drive_velocity(50, PERCENT)
drivetrain.drive_for(FORWARD, 200, MM)
drivetrain.turn_for(RIGHT, 90, DEGREES)
drivetrain.drive_for(FORWARD, 200, MM)

المستشعرات

  • مستشعر المسافة: يقيس بعد أقرب جسم أمام الروبوت، ونقرأه بالأمر ⁦front_distance.get_distance(MM)⁩ فيعيد رقمًا بالملمترات.
  • مستشعر اللون أسفل الروبوت: يرى لون الأرض تحته، والأمر ⁦down_eye.detect(RED)⁩ يعيد ⁦True⁩ إذا كان تحته اللون الأحمر، وإلا يعيد ⁦False⁩.
  • المصد (Bumper): يحس بالاصطدام عند ملامسة جسم، ويفيد حين لا يكفي مستشعر المسافة.

«المستشعر عين الروبوت، والشرط عقله الذي يقرر»

المستشعرات مع if

نستعمل ⁦if⁩ لنجعل الروبوت يختار فعلًا بحسب قراءة المستشعر. في المثال يتحرك الروبوت قليلًا ثم يفحص الجدار:

# نص
drivetrain.drive_for(FORWARD, 200, MM)
if front_distance.get_distance(MM) < 300:
    drivetrain.turn_for(RIGHT, 90, DEGREES)
else:
    drivetrain.drive_for(FORWARD, 200, MM)

إذا كان الجدار أقرب من ٣٠٠ ملم فيدور الروبوت يمينًا، وإلا يتقدم مسافة أخرى.

تذكّر

الفحص بـ ⁦if⁩ يحدث مرة واحدة فقط عند وصول البرنامج إليه.

الحلقة while

نريد أن يتحرك الروبوت ويفحص باستمرار. هنا نستخدم ⁦while⁩ التي تكرر الأسطر المزاحة ما دام الشرط صحيحًا:

# نص
drivetrain.set_drive_velocity(50, PERCENT)
drivetrain.drive(FORWARD)
while front_distance.get_distance(MM) > 300:
    wait(1, SECONDS)
drivetrain.stop()

يتحرك الروبوت إلى الأمام ويفحص كل ثانية: هل المسافة أكبر من ٣٠٠ ملم؟ فإن صارت أقل أو تساوي ٣٠٠ خرج من الحلقة ونفذ الأمر ⁦drivetrain.stop()⁩.

التوقف عند لون معين

نرسم على أرض الملعب الافتراضي خطًّا أحمر عند حدود المرمى، ونريد أن يتوقف الروبوت فوقه:

# نص
drivetrain.drive(FORWARD)
while not down_eye.detect(RED):
    wait(1, SECONDS)
drivetrain.stop()

الكلمة ⁦not⁩ تعكس القيمة، فمعنى الشرط: ما دام لم يرَ الروبوت اللون الأحمر فليواصل الحركة.

انتبه

تأكد أن شرط ⁦while⁩ سيصير خطأ في النهاية، وإلا بقي الروبوت في حلقة لا تنتهي.

نشاط تعليمي

التطبيق الأول

اكتب برنامجًا يحرك الروبوت إلى الأمام حتى يقترب من الجدار على بعد ٢٠٠ ملم أو أقل ثم يتوقف.

الإجابة

نستعمل ⁦drivetrain.drive(FORWARD)⁩ ثم ⁦while front_distance.get_distance(MM) > 200:⁩ ثم ⁦drivetrain.stop()⁩.

الهدف

أن يوظف الطالب الحلقة مع مستشعر المسافة.

المسألة الثانية

ماذا يفعل الروبوت في البرنامج الذي يستعمل ⁦if front_distance.get_distance(MM) < 300:⁩ إذا كان الجدار على بعد ٥٠٠ ملم؟

الإجابة

لا ينفذ كتلة ⁦if⁩ بل ينفذ كتلة ⁦else⁩ إن وجدت.

الهدف

أن يتتبع الطالب البرنامج.

الموقف الثالث

تريد أن يتوقف الروبوت عند اللون الأحمر ثم يدور يمينًا ٩٠ درجة.

الإجابة

بعد الحلقة التي تنتظر اللون الأحمر نكتب ⁦drivetrain.stop()⁩ ثم ⁦drivetrain.turn_for(RIGHT, 90, DEGREES)⁩.

الهدف

أن يجمع الطالب بين الحلقة والدوران.

ملاحظات مهمة

  1. 1الشرط ينتهي بنقطتين، وأسطر الكتلة تزاح ٤ مسافات.
  2. 2⁦while⁩ تكرر ما دام الشرط صحيحًا، و⁦if⁩ تفحص مرة واحدة.
  3. 3نضبط السرعة قبل بدء الحركة.
  4. 4نختبر البرنامج في المحاكي ونعدّل الأرقام حتى يعمل كما نريد.

أخطاء شائعة

  • ✗ خطأكتابة ⁦=⁩ بدل ⁦==⁩ في المقارنة.
    ✓ الصواب: نستعمل ⁦==⁩ للمساواة و⁦<⁩ أو ⁦>⁩ للمقارنة.
  • ✗ خطأنسيان ⁦drivetrain.stop()⁩ بعد حلقة ⁦while⁩.
    ✓ الصواب: نكتب أمر التوقف بعد الحلقة ليقف الروبوت.
+عرض جميع الأخطاء (3) ←إخفاء الأخطاء الإضافية
  • ✗ خطأعدم إزاحة سطر الحلقة.
    ✓ الصواب: نزيح الأسطر التابعة للحلقة والشرط ٤ مسافات.

ملخص الدرس

  • نحرك الروبوت بالأمرين ⁦drive_for⁩ و⁦turn_for⁩ ونضبط سرعته.
  • المستشعرات: المسافة واللون والمصد.
  • ⁦if⁩ تفحص مرة واحدة، و⁦while⁩ تكرر الفحص ما دام الشرط صحيحًا.
  • نوقف الروبوت بالأمر ⁦drivetrain.stop()⁩ عند تحقق الشرط.

هل أتقنت الدرس؟اختبر نفسك من خلال اختبار قصير من عدة أسئلة.

حزمة الدرس