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

أهداف الدرس
- يشرح معنى الحركة التلقائية ومتى يتخذ الروبوت قراره بنفسه.
- يستخدم while True: وif مع مستشعر المسافة.
- يستخدم front_distance.get_distance(MM) لقراءة المسافة.
- يكتب برنامجًا يوقف الروبوت قبل الجدار.
- يوضح فكرة تجنب العوائق ويقارنها بالسيارات ذاتية القيادة.
المفهوم الأساسي
الحركة التلقائية أن يقرأ الروبوت مستشعراته ويقرر بنفسه ماذا يفعل، بدل أن ننفذ له قائمة حركات ثابتة، وذلك باستخدام الحلقات والشروط.
شرح الدرس
حين تمشي في الممر لا تعد خطواتك قبل الباب، بل تنظر وتتوقف قبل أن تصطدم. الروبوت التلقائي يفعل مثلك باستخدام مستشعراته.
لماذا الحركة التلقائية؟
لو برمجنا الروبوت ليتحرك ٥٠٠ مليمتر ثم ظهر عائق في ٣٠٠ فسيصطدم به. أما إن ربطنا الحركة بقراءة المستشعر فيتوقف في الوقت المناسب مهما كان موضع العائق.
مستشعر المسافة
الأمر front_distance.get_distance(MM) يعيد المسافة بالمليمتر بين مقدمة الروبوت وأقرب جسم أمامه. تكون القيمة كبيرة عندما يكون الطريق مفتوحًا وصغيرة عندما يقترب الجدار.
الشرط if
if front_distance.get_distance(MM) < 100:
drivetrain.stop()- الشرط: هل المسافة أقل من ١٠٠ مليمتر؟
- النتيجة: إن تحقق الشرط ينفذ السطر المزاح، وهو إيقاف الروبوت.
- الإزاحة: الأربع مسافات قبل drivetrain.stop() تعني أنه يتبع الشرط.
الحلقة while True
الحلقة while True: تكرر الأوامر التي تحتها باستمرار حتى نخرج منها بالأمر break. وبما أن الروبوت يحتاج إلى فحص المستشعر مرة بعد مرة فنضع الفحص داخلها.
التوقف قبل الجدار
drivetrain.drive(FORWARD)
while True:
if front_distance.get_distance(MM) < 100:
drivetrain.stop()
break
wait(0.1, SECONDS)- السطر الأول: يبدأ الروبوت التحرك للأمام.
- الحلقة: تفحص المسافة كل عُشر ثانية.
- الشرط: عندما تقل المسافة عن ١٠٠ مليمتر يقف الروبوت ثم يخرج البرنامج من الحلقة بالأمر break.
تجنب العوائق
نريد أن يستمر الروبوت في السير بعد لقاء الجدار فيدور بدل أن يقف:
drivetrain.drive(FORWARD)
while True:
if front_distance.get_distance(MM) < 100:
drivetrain.turn_for(RIGHT, 90, DEGREES)
drivetrain.drive(FORWARD)
wait(0.1, SECONDS)عند رؤية الجدار يدور الروبوت إلى اليمين ويكمل السير. فهو يتخذ القرار بنفسه دون تدخل منا.
مقارنة بالسيارات ذاتية القيادة
السيارة ذاتية القيادة فكرتها قريبة جدًا: مستشعرات تقيس المسافات وتقرر التوقف أو الدوران، لكنها أعقد بكثير وتستخدم كاميرات وخوارزميات أذكى. ما نتعلمه الآن هو أساس الفكرة.
وتختلف الأوامر قليلًا بين إصدارات المنصة، فراجع ما يظهر لك.
اقرأ المستشعر، وقارن بالشرط، ثم قرر الفعل، وكرر ذلك في الحلقة.
اختر مسافة أمان مناسبة، فإن كانت صغيرة جدًا قد يصطدم الروبوت بسبب تأخر التوقف.
نشاط تعليمي
النشاط الأول
لماذا نضع فحص المستشعر داخل الحلقة؟
لأن الروبوت يحتاج إلى فحص المسافة باستمرار أثناء حركته.
أن يفسر الطالب دور الحلقة.
التطبيق الثاني
عدّل برنامج التوقف ليقف الروبوت قبل الجدار بمسافة ٢٠٠ مليمتر.
نغير الشرط إلى front_distance.get_distance(MM) < 200.
أن يعدل الطالب قيمة الشرط.
الموقف الثالث
فسّر باختصار كيف تتخذ سيارة ذاتية القيادة قرار التوقف أمام عائق.
مستشعراتها تقيس المسافة فإذا قلت عن حد معين قررت التوقف أو الدوران.
أن يربط الطالب الفكرة بالتطبيق الواقعي.
ملاحظات مهمة
- 1الإزاحة (٤ مسافات) ضرورية في بايثون لتحديد ما يتبع الشرط والحلقة.
- 2while True: حلقة لا تنتهي إلا بـbreak أو بإيقاف البرنامج.
- 3ضع wait قصيرة داخل الحلقة حتى لا تُرهق المنصة.
- 4اختبر برنامجك في ملاعب مختلفة.
أخطاء شائعة
- ✗ خطأنسيان النقطتين : بعد if أو while True.✓ الصواب: اكتبهما دائمًا.
- ✗ خطأكتابة = في الشرط بدل <.✓ الصواب: استخدم < أو > أو == للمقارنة.
+عرض جميع الأخطاء (3) ←إخفاء الأخطاء الإضافية
- ✗ خطأوضع drivetrain.stop() خارج الحلقة فلا يصل البرنامج إليه.✓ الصواب: ضعه داخل الشرط في الحلقة.
ملخص الدرس
- الحركة التلقائية قرار من الروبوت بحسب قراءة المستشعر.
- front_distance.get_distance(MM) تعيد المسافة بالمليمتر.
- if تنفذ أمرًا عند تحقق شرط، وwhile True: تكرر الفحص.
- تجنب العوائق فكرة تشبه السيارات ذاتية القيادة.
هل أتقنت الدرس؟اختبر نفسك من خلال اختبار قصير من عدة أسئلة.