Трансмісія#

Вступ#

Робот 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)

Параметри

Опис

direction

Напрямок руху робота: FORWARD або REVERSE.

# Drive for 2 seconds.
robot.drive(FORWARD)
wait(2, SECONDS)
robot.stop()

drive_for#

drive_for переміщує робота вперед або назад на певну відстань. Проект чекатиме, поки робот завершить рух, перш ніж буде виконано наступний рядок коду.

Usage:
robot.drive_for(direction, distance, unit)

Параметри

Опис

direction

Напрямок руху робота: FORWARD або REVERSE.

distance

Відстань, яку проїжджає робот. Це може бути ціле або десяткове число.

unit

Одиниця вимірювання відстані: MM (міліметри) або STEPS (один квадрат на полі 123).

# 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)

Параметри

Опис

direction

Напрямок руху робота: FORWARD або REVERSE.

# Reverse after a crash.
robot.drive_until(FORWARD)
robot.drive_for(REVERSE, 1, STEPS)

turn#

turn повертає робота ліворуч або праворуч назавжди. Робот продовжуватиме обертатися, доки йому не буде надано іншу дію, наприклад, рух або зупинка.

Usage:
robot.turn(direction)

Параметри

Опис

direction

Напрямок повороту робота: LEFT або RIGHT.

# Turn for 2 seconds.
robot.turn(RIGHT)
wait(2, SECONDS)
robot.stop()

turn_for#

turn_for повертає робота ліворуч або праворуч на певну кількість градусів. Проект чекатиме, поки робот завершить поворот, перш ніж виконуватиметься наступний рядок коду.

Usage:
robot.turn_for(direction, degrees)

Параметри

Опис

direction

Напрямок повороту робота: LEFT або RIGHT.

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 градусів. Робот поверне найкоротшим шляхом для досягнення цільового курсу.

Початковий курс — 0 градусів.

Проєкт чекатиме, поки робот завершить обертання, перш ніж буде виконано наступний рядок коду.

Usage:
robot.turn_to_heading(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)

Параметри

Опис

time

Кількість часу, що відводиться на рух. Це може бути ціле або десяткове число.

unit

Одиниця часу: MSEC або SECONDS.

# 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)

Параметри

Опис

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())