نظام نقل الحركة#
مقدمة#
يمتلك الروبوت 123 نظام دفع ثنائي العجلات يسمح له بالتحرك والانعطاف. وتتحكم طرق نظام الدفع في كيفية تحرك الروبوت.
يمكن لنظام نقل الحركة قياس المسافة بطريقتين: الخطوات والمليمترات. الخطوة الواحدة تعادل مربعًا واحدًا على خريطة 123.
توجد طرق عديدة لبرمجة نظام نقل الحركة. فيما يلي قائمة بجميع طرق برمجة نظام نقل الحركة:
الإجراءات — تحريك الروبوت وتدويره.
drive— يحرك الروبوت للأمام أو للخلف إلى الأبد.drive_for— يحرك الروبوت للأمام أو للخلف لمسافة محددة.drive_until— يحرك الروبوت للأمام أو للخلف حتى يكتشف جسمًا أو اصطدامًا أو خطًا.turn— يقوم بتدوير الروبوت إلى اليسار أو اليمين إلى الأبد.turn_for— يقوم بتدوير الروبوت إلى اليسار أو اليمين لعدد محدد من الدرجات.turn_to_heading— يقوم بتدوير الروبوت لمواجهة اتجاه محدد من -359 إلى 359 درجة.stop— يوقف حركة الروبوت.
المُعدِّلات — اضبط إعدادات نظام نقل الحركة.
set_timeout— يحدد المدة التي سيحاول فيها الروبوت إنهاء الحركة.set_heading— يغير اتجاه الروبوت الحالي إلى اتجاه جديد.
المستلمون — تحقق من حالة الحركة.
is_stopped— تُرجع ما إذا كان الروبوت قد توقف عن الحركة، كقيمة منطقية.get_heading— يعيد اتجاه الروبوت الحالي من 0 إلى 359 درجة.
الإجراءات#
drive#
يُحرّك الأمر drive الروبوت للأمام أو للخلف باستمرار. سيستمر الروبوت في الحركة حتى يُعطى أمرًا آخر، مثل الانعطاف أو التوقف.
Usage:
robot.drive(direction)
حدود |
وصف |
|---|---|
|
اتجاه حركة الروبوت: |
# Drive for 2 seconds.
robot.drive(FORWARD)
wait(2, SECONDS)
robot.stop()
drive_for#
يُحرّك drive_for الروبوت للأمام أو للخلف لمسافة محددة. سينتظر البرنامج حتى ينتهي الروبوت من الحركة قبل تنفيذ السطر التالي من التعليمات البرمجية.
Usage:
robot.drive_for(direction, distance, unit)
حدود |
وصف |
|---|---|
|
اتجاه حركة الروبوت: |
|
المسافة التي يقطعها الروبوت. يمكن أن تكون هذه المسافة عددًا صحيحًا أو عددًا عشريًا. |
|
وحدة المسافة: |
# Drive back and forth.
robot.drive_for(FORWARD, 3, STEPS)
robot.drive_for(REVERSE, 3, STEPS)
drive_until#
drive_until يحرك الروبوت للأمام أو للخلف حتى يكتشف جسماً أو اصطداماً أو خطاً.
Usage:
robot.drive_until(direction)
حدود |
وصف |
|---|---|
|
اتجاه حركة الروبوت: |
# Reverse after a crash.
robot.drive_until(FORWARD)
robot.drive_for(REVERSE, 1, STEPS)
turn#
يؤدي الضغط على زر turn إلى تدوير الروبوت يمينًا أو يسارًا بشكل دائم. سيستمر الروبوت في الدوران حتى يتم إعطاؤه إجراءً آخر، مثل القيادة أو التوقف.
Usage:
robot.turn(direction)
حدود |
وصف |
|---|---|
|
اتجاه دوران الروبوت: |
# Turn for 2 seconds.
robot.turn(RIGHT)
wait(2, SECONDS)
robot.stop()
turn_for#
يُدير turn_for الروبوت يسارًا أو يمينًا بزاوية محددة. سينتظر البرنامج حتى ينتهي الروبوت من الدوران قبل تنفيذ السطر التالي من التعليمات البرمجية.
Usage:
robot.turn_for(direction, degrees)
حدود |
وصف |
|---|---|
|
اتجاه دوران الروبوت: |
|
عدد الدرجات المطلوبة للدوران. يمكن أن يكون هذا العدد صحيحًا أو عشريًا. |
# Turn left, then turn around to the right.
robot.turn_for(LEFT, 90)
robot.turn_for(RIGHT, 180)
turn_to_heading#
turn_to_heading يُوجّه الروبوت نحو اتجاه مُحدد من -359 إلى 359 درجة. سيسلك الروبوت أقصر مسار للوصول إلى الاتجاه المستهدف.
اتجاه البداية هو صفر درجة.
سينتظر المشروع حتى ينتهي الروبوت من الدوران قبل تشغيل سطر التعليمات البرمجية التالي.
Usage:
robot.turn_to_heading(heading)
حدود |
وصف |
|---|---|
|
الاتجاه الذي يجب أن يواجهه الروبوت، من -359 إلى 359 درجة. |
# Turn to face the cardinal directions.
robot.turn_to_heading(90)
wait(2, SECONDS)
robot.turn_to_heading(180)
wait(2, SECONDS)
robot.turn_to_heading(270)
wait(2, SECONDS)
robot.turn_to_heading(0)
wait(2, SECONDS)
stop#
stop يوقف حركة الروبوت.
Usage:
robot.stop()
حدود |
وصف |
|---|---|
لا تحتوي هذه الطريقة على أي معلمات. |
# Stop driving after 4 seconds.
robot.drive(FORWARD)
wait(4, SECONDS)
robot.stop()
المتحولون#
set_timeout#
يُحدد set_timeout عدد الثواني التي سيحاول فيها الروبوت إكمال حركة معينة. إذا لم يتمكن الروبوت من إكمالها خلال هذا الوقت، فسيتوقف عن المحاولة وينتقل إلى سطر التعليمات البرمجية التالي. هذا يمنع الروبوت من التوقف عند حركة معينة.
Usage:
robot.set_timeout(time, unit)
حدود |
وصف |
|---|---|
|
مقدار الوقت اللازم لإتمام الحركة. يمكن أن يكون هذا عددًا صحيحًا أو عددًا عشريًا. |
|
وحدة الزمن: |
# Turn right after driving for 1 second.
robot.set_timeout(1, SECONDS)
robot.drive_for(FORWARD, 1000, MM)
robot.turn_for(RIGHT, 90)
set_heading#
set_heading يغير اتجاه الروبوت الحالي إلى قيمة اتجاه جديدة.
على سبيل المثال، إذا استدار الروبوت ليواجه اليمين، فإن ضبط الاتجاه على 0 درجة يجعل وضعية مواجهة اليمين هي 0 درجة الجديدة.
Usage:
robot.set_heading(heading)
حدود |
وصف |
|---|---|
|
قيمة الاتجاه، بالدرجات، التي سيتم ضبطها للروبوت. |
# Face the new 0 degree heading.
robot.set_heading(90)
robot.turn_to_heading(0)
المحصلون#
is_stopped#
is_stopped تُرجع Boolean التي تُبلغ عما إذا كان الروبوت قد توقف عن الحركة.
True— تم إيقاف الروبوت.False— الروبوت لا يزال يتحرك.
Usage:
robot.is_stopped()
حدود |
وصف |
|---|---|
لا تحتوي هذه الطريقة على أي معلمات. |
# Glow blue after a crash.
robot.drive_until(FORWARD)
while True:
if robot.is_stopped():
robot.led.glow(BLUE)
else:
robot.led.glow(GREEN)
wait(0.05, SECONDS)
get_heading#
get_heading تُرجع الاتجاه الذي يواجهه الروبوت حاليًا كرقم صحيح من 0 إلى 359 درجة.
اتجاه بدء الروبوت هو 0 درجة.
Usage:
robot.get_heading()
حدود |
وصف |
|---|---|
لا تحتوي هذه الطريقة على أي معلمات. |
# Display the heading after turning.
robot.turn_for(RIGHT, 450)
console.print(robot.get_heading())