Мотор та Моторна група#

Вступ#

Двигуни та групи двигунів контролюють рух частин робота. Motor керує одним налаштованим інтелектуальним двигуном, тоді як MotorGroup керує кількома налаштованими інтелектуальними двигунами разом, щоб вони рухалися тандемно. Двигуни та групи двигунів можна використовувати для підняття руки, повороту лапи, обертання колеса або переміщення іншої частини конструкції. Два або чотири двигуни можуть працювати разом як трансмісія для переміщення та повороту всього робота.

Кожен двигун або група двигунів налаштовується у вікні «Пристрої». Залежно від збірки, назви двигунів та груп двигунів можуть змінюватися. На цій сторінці як приклади назв використовуються motor_1 та motor_group_1 За потреби замініть їх власними налаштованими назвами.

Двигун VEX EXP, що показує напрямок руху вперед, позначений знаком плюс та стрілкою, що вказує на обертання ліворуч або проти годинникової стрілки. Двигун VEX EXP, що показує зворотний напрямок обертання, позначений знаком мінус та стрілкою, що вказує на те, що він обертається праворуч або за годинниковою стрілкою.

За замовчуванням, FORWARD обертає двигун проти годинникової стрілки, а REVERSE обертає двигун за годинниковою стрілкою. Якщо двигун налаштовано на реверс, ці напрямки зміняться.

Існує багато способів кодування двигунів та груп двигунів. Нижче наведено список усіх методів кодування двигунів та груп двигунів:

Дії — Зупинити та розкрутити двигуни й групи двигунів.

  • spin — Обертає двигун або групу двигунів вперед або назад безкінечно.

  • spin_for — Обертає двигун або групу двигунів на певну відстань.

  • spin_to_position — Обертає двигун або групу двигунів у певне положення.

  • stop — Зупиняє обертання двигуна або групи двигунів.

Мутатори — налаштування параметрів двигуна та групи двигунів.

  • set_position — Змінює поточне положення двигуна або групи двигунів на нове значення.

  • set_velocity — Вказує двигуну або групі двигунів, з якою швидкістю обертатися.

  • set_stopping — Встановлює спосіб зупинки руху двигуна або групи двигунів: гальмуванням, рухом по інерції або утримуванням.

  • set_max_torque — Встановлює, наскільки сильно двигун або група двигунів можуть обертатися під час обертання.

  • set_timeout — Встановлює, скільки часу двигун або група двигунів намагатимуться завершити рух.

  • set_reversed — Змінює, чи змінюється напрямок обертання двигуна на зворотний.

  • reset_position — Змінює поточну позицію двигуна або групи двигунів на 0.

Геттери — Перевірка стану двигуна та групи двигунів.

  • is_done — Повертає у вигляді логічного значення, чи завершив рух двигун або група двигунів.

  • is_spinning — Повертає, чи обертається двигун або група двигунів, у вигляді логічного значення.

  • position — Повертає поточну позицію двигуна або групи двигунів.

  • velocity — Повертає швидкість обертання двигуна або групи двигунів.

  • current — Повертає силу електричного струму, що споживається двигуном або групою двигунів.

  • power — Повертає кількість потужності, яку використовує двигун або група двигунів.

  • torque — Повертає крутний момент, який використовує двигун або група двигунів.

  • efficiency — Повертає, наскільки ефективно двигун або група двигунів використовує енергію.

  • temperature — Повертає температуру двигуна або групи двигунів.

  • count — Повертає кількість двигунів у групі двигунів.

  • get_timeout — Повертає поточну тривалість тайм-ауту двигуна або групи двигунів.

Конструктори — Ручна ініціалізація та налаштування двигунів і груп двигунів.

  • Motor — Створює двигун.

  • MotorGroup — Створює групу двигунів.

Дії#

spin#

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

Usage:
motor_1.spin(direction, velocity, units)

Параметри

Опис

direction

Напрямок обертання двигуна або групи двигунів: FORWARD або REVERSE.

velocity

Optional. The velocity to spin with from 0% to 100% when using PERCENT. This can be an integer or decimal (float).
If VOLT is used in units, this value can be from -12.0 to 12.0. A negative value spins opposite the given direction.

units

Необов’язково. Одиниця вимірювання швидкості:

  • PERCENT
  • RPM (за замовчуванням) — Обертів за хвилину
  • VelocityUnits.DPS — Градусів за секунду
  • VOLT — Напруги

# Spin the motor, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()

spin_for#

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

Usage:
motor_1.spin_for(direction, angle, units, velocity, units_v, wait)

Параметри

Опис

direction

Напрямок обертання двигуна або групи двигунів: FORWARD або REVERSE.

angle

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

units

Необов’язково. Одиниця вимірювання відстані: DEGREES (за замовчуванням) або TURNS.

velocity

Необов’язково. Швидкість обертання від 0% до 100% при використанні PERCENTЦе може бути ціле число integer або десяткове число (float).

units_v

Необов’язково. Одиниця вимірювання швидкості:

  • PERCENT
  • RPM (за замовчуванням) — Обертів за хвилину

wait

Необов’язково.

  • wait=True (за замовчуванням) — Змушує проект чекати, поки двигун або група двигунів завершить обертання, перш ніж виконувати наступний рядок коду.
  • wait=False — Змушує наступний рядок коду виконуватися негайно.

# Spin the motor forward once, then reset
motor_1.spin_for(FORWARD, 90, DEGREES)
wait(1, SECONDS)
motor_1.spin_for(REVERSE, 90, DEGREES)

spin_to_position#

spin_to_position обертає двигун або групу двигунів у певне положення.

Положення двигуна або групи двигунів – це відстань його обертання, що вимірюється в DEGREES або TURNSОдин оберт дорівнює 360 градусам. На початку проекту положення двигуна або групи двигунів встановлюється на 0 градусів. Положення двигуна або групи двигунів також можна встановити за допомогою методу set_position.

Значення положення є абсолютними. Це означає, що напрямок обертання залежить від поточного положення двигуна або групи двигунів.

Usage:
motor_1.spin_to_position(rotation, units, velocity, units_v, wait)

Параметри

Опис

rotation

Значення позиції, до якої обертатиметься двигун або група двигунів. Це може бути ціле число integer або десяткове число (float з комою).

units

Одиниця позиції: DEGREES або TURNS.

velocity

Необов’язково. Швидкість обертання від 0% до 100% при використанні PERCENTЦе може бути ціле число integer або десяткове число (float).

units_v

Необов’язково. Одиниця вимірювання швидкості:

  • PERCENT
  • RPM — Обертів за хвилину
  • VelocityUnits.DPS — Градусів за секунду

wait

Необов’язково.

  • wait=True (за замовчуванням) — Змушує проект чекати, поки двигун або група двигунів завершить обертання, перш ніж виконувати наступний рядок коду.
  • wait=False — Змушує наступний рядок коду виконуватися негайно.

# Spin the motor to the new 0 position
motor_1.set_position(180, DEGREES)
motor_1.spin_to_position(0, DEGREES)

stop#

stop зупиняє обертання двигуна або групи двигунів.

Usage:
motor_1.stop(mode)

Параметри

Опис

mode

Додатково. Як зупиняться двигун або група двигунів:

  • BRAKE — Негайна зупинка.
  • COAST — Уповільнення до повної зупинки.
  • HOLD — Негайна зупинка та утримування двигуна в певному положенні.

# Spin the motor, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()

Мутатори#

set_position#

Положення двигуна або групи двигунів – це те, наскільки він обертувався, вимірюється в DEGREES або TURNSОдин оберт дорівнює 360 градусам. set_position змінює поточне положення двигуна або групи двигунів на нове значення.

Наприклад, якщо двигун або група двигунів оберталися на 180 градусів, встановлення положення на 0 градусів скине це положення зі 180 на 0 градусів. Потім двигун або група двигунів можуть обертатися в положення на основі цього нового значення.

Usage:
motor_1.set_position(position, units)

Параметри

Опис

position

Значення позиції, яке потрібно встановити для двигуна або групи двигунів. Це може бути integer або десяткове число (float з комою).

units

Необов’язково. Одиниця вимірювання положення: DEGREES (за замовчуванням) або TURNS.

# Spin the motor to the new 0 position
motor_1.set_position(180, DEGREES)
motor_1.spin_to_position(0, DEGREES)

set_velocity#

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

Кожен проект починається з того, що кожен двигун або група двигунів обертаються зі швидкістю 50% за замовчуванням.

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

Usage:
motor_1.set_velocity(velocity, units)

Параметри

Опис

velocity

The speed the motor or motor group will spin at. PERCENT uses values from 0% to 100%. RPM uses values from 0 to 127. This can be an integer or decimal (float).

units

Необов’язково. Одиниця вимірювання швидкості:

  • PERCENT
  • RPM (за замовчуванням) — Обертів за хвилину
  • VelocityUnits.DPS — Градусів за секунду

# Spin forward at the default velocity
motor_1.spin_for(FORWARD, 100)
wait(1, SECONDS)

# Spin slower
motor_1.set_velocity(20, PERCENT)
motor_1.spin_for(FORWARD, 100)
wait(1, SECONDS)

# Spin faster
motor_1.set_velocity(100, PERCENT)
motor_1.spin_for(FORWARD, 100)
wait(1, SECONDS)

set_stopping#

set_stopping встановлює, як двигун або група двигунів зупинятимуть рух: гальмуванням, рухом на вильоті або утримуванням.

Usage:
motor_1.set_stopping(mode)

Параметри

Опис

mode

Як зупиниться двигун або група двигунів:

  • BRAKE — Негайна зупинка.
  • COAST — Уповільнення до повної зупинки.
  • HOLD — Негайна зупинка та утримування двигуна в певному положенні.

set_max_torque#

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

set_max_torque встановлює максимальний крутний момент, який дозволяється використовувати двигуну або групі двигунів.

Вищий відсоток дозволяє двигуну або групі двигунів тиснути сильніше, наприклад, під час підняття важкого предмета. Нижчий відсоток обмежує силу, з якою може тиснути двигун або група двигунів. Це може допомогти захистити робота, якщо двигун або група двигунів застрягнуть або досягнуть межі можливостей для переміщення.

Кожен проект починається з крутного моменту кожного двигуна або групи двигунів, встановленого за замовчуванням на рівні 50%.

Usage:
motor_1.set_max_torque(value, units)

Параметри

Опис

value

The max torque the motor or motor group can use. PERCENT uses integers from 0% to 100%. For TorqueUnits.NM, use a float from 0.0 to 2.1 (Newton-meters). For TorqueUnits.INLB, use a float from 0.0 to 22.0 (inch-pounds).

units

Необов’язково. Одиниця вимірювання крутного моменту:

  • PERCENT
  • TorqueUnits.NM (за замовчуванням) — Ньютон-метри
  • TorqueUnits.INLB — Дюйми-фунти
  • CurrentUnits.AMP

set_timeout#

set_timeout встановлює час, протягом якого двигун або група двигунів намагатимуться завершити рух. Якщо двигун або група двигунів не зможе завершити рух за цей час, вони припинять спроби та перейдуть до наступного рядка коду. Це запобігає зависанню двигуна або групи двигунів на русі.

Usage:
motor_1.set_timeout(value, units)

Параметри

Опис

value

Кількість часу, протягом якого двигун або група двигунів можуть намагатися завершити рух. Це може бути додатне ціле число integer або десяткове число (float).

units

Необов’язково. Одиниця часу:

  • SECONDS
  • MSEC (за замовчуванням) — Мілісекунди

set_reversed#

set_reversed змінює, чи напрямок обертання двигуна реверсований. Цей метод працює так само, як встановлення параметра reverse на True під час побудови Motor.

Примітка: Цей метод працюватиме лише з двигуном, а не з групою двигунів.

Usage:
motor_1.set_reversed(value)

Параметри

Опис

value

Чи змінено напрямок обертання двигуна на зворотний:

  • True — Змінює напрямок обертання двигуна на зворотний.
  • False — Повертає напрямок обертання двигуна до значення за замовчуванням.

reset_position#

reset_position змінює поточне положення двигуна або групи двигунів на 0.

Usage:
motor_1.reset_position()

Параметри

Опис

Цей метод не має параметрів.

Геттери#

is_done#

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

  • True — Рух двигуна або групи двигунів завершено.

  • False — Двигун або група двигунів все ще рухається.

Цей метод працює разом із наступними методами руху, які мають параметр wait : spin_for та spin_to_position.

Usage:
motor_1.is_done()

Параметри

Опис

Цей метод не має параметрів.

# Drive forward until the motor is done spinning
motor_1.spin_for(FORWARD, 200, wait=False)
while True:
  if motor_1.is_done():
    drivetrain.stop()
  else:
    drivetrain.drive(FORWARD)

is_spinning#

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

  • True — Двигун або група двигунів обертається.

  • False — Двигун або група двигунів не обертається.

Цей метод працює разом із наступними методами руху, які мають параметр wait : spin_for та spin_to_position.

Usage:
motor_1.is_spinning()

Параметри

Опис

Цей метод не має параметрів.

# Drive forward until the motor is done spinning
motor_1.spin_for(FORWARD, 200, wait=False)
while True:
  if motor_1.is_spinning():
    drivetrain.drive(FORWARD)
  else:
    drivetrain.stop()

position#

Положення двигуна або групи двигунів – це те, наскільки він обертувався, вимірюється в DEGREES або TURNSОдин оберт дорівнює 360 градусам. position повертає поточне положення двигуна або групи двигунів.

На початку проекту положення двигуна або групи двигунів встановлюється на 0 градусів. Якщо двигун або група двигунів обертається на один оберт вперед, положення становитиме 360 градусів або 1 оберт. Якщо двигун або група двигунів обертається в іншому напрямку, положення буде від’ємним.

Usage:
motor_1.position(units)

Параметри

Опис

units

Необов’язково. Одиниця вимірювання для повернення положення двигуна або групи двигунів: DEGREES (за замовчуванням) або TURNS.

# Display the motor's position after spinning
brain.screen.print(motor_1.position())
brain.screen.next_row()

motor_1.spin(FORWARD)
wait(1, SECONDS)
brain.screen.print(motor_1.position())

motor_1.stop()

velocity#

velocity повертає швидкість обертання двигуна або групи двигунів у відсотках від -100% до 100% або у вигляді обертів за хвилину від -127 об/хв до 127 об/хв.

Додатне значення означає, що двигун або група двигунів обертається вперед. Від’ємне значення означає, що вони обертаються назад.

Usage:
motor_1.velocity(units)

Параметри

Опис

units

Необов’язково. Одиниця вимірювання швидкості, яку потрібно повернути:

  • PERCENT
  • RPM (за замовчуванням) — Оберти за хвилину
  • VelocityUnits.DPS — Градуси за секунду

current#

current повертає силу електричного струму, що використовується двигуном або групою двигунів, виміряну в амперах від 0,0 до 1,2 А. Струм – це кількість електроенергії, що протікає через двигун або групу двигунів.

Вище значення струму означає, що двигун або група двигунів використовує більше електричного струму. Це може статися, коли двигун або група двигунів піднімає щось важке, штовхає предмет або намагається рухатися, коли він застряг.

Це можна використовувати для перевірки, чи виникають проблеми з двигуном або групою двигунів під час руху. Якщо струм залишається високим, двигун може нагріватися або використовувати енергію менш ефективно.

Usage:
motor_1.current(units)

Параметри

Опис

units

Необов’язково. Поточна одиниця вимірювання, яку потрібно повернути:

  • CurrentUnits.AMP (за замовчуванням) — Amps

power#

power повертає кількість потужності, яку використовує двигун або група двигунів, виміряну у ватах від 0,0 до 11,0 Вт. Потужність показує, як швидко двигун або група двигунів використовує енергію.

Вище значення потужності означає, що двигун або група двигунів використовують енергію швидше. Це може статися, коли двигун або група двигунів піднімає щось важке, штовхає предмет або намагається рухатися, коли він застряг.

Це можна використовувати для порівняння рухів або перевірки, чи несправний двигун чи група двигунів. Якщо потужність залишається високою, двигун може нагріватися або використовувати енергію менш ефективно.

Usage:
motor_1.power(units)

Параметри

Опис

units

Необов’язково. Одиниця вимірювання потужності, яку потрібно повернути:

  • PowerUnits.WATT (за замовчуванням) — Ват

torque#

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

torque повертає величину крутного моменту, який використовує двигун або група двигунів, виміряну в дюйм-фунтах (InLb) від 0,0 до 22,0 або ньютон-метрах (Nm) від 0,0 до 2,1.

Вище значення крутного моменту означає, що двигун або група двигунів штовхає або тягне сильніше. Це може статися, коли двигун або група двигунів піднімає щось важке, штовхає предмет або намагається рухатися, коли він застряг.

Це можна використовувати для перевірки наявності проблем з мотором або моторною групою, або для порівняння того, скільки поштовху потрібно для різних рухів.

Щоб встановити крутний момент двигуна або групи двигунів, використовуйте set_max_torque.

Usage:
motor_1.torque(units)

Параметри

Опис

units

Одиниця вимірювання крутного моменту, яку потрібно повернути:

  • TorqueUnits.NM (за замовчуванням) — Ньютон-метри
  • TorqueUnits.INLB — Дюйми-фунти

efficiency#

efficiency повертає, наскільки ефективно двигун або група двигунів використовує потужність, у відсотках від 0% до 100%.

Ефективність показує, яка частина потужності двигуна або групи двигунів використовується для руху. Вище значення ефективності означає, що для руху використовується більше потужності двигуна або групи двигунів. Нижче значення ефективності може мати місце, коли двигун або група двигунів працюють інтенсивно, але мало рухаються, наприклад, коли вони застрягли або штовхаються об якийсь об’єкт.

Це можна використовувати для порівняння рухів або перевірки, чи двигун або група двигунів витрачає енергію даремно, замість того, щоб використовувати її для руху.

Usage:
motor_1.efficiency(units)

Параметри

Опис

units

Необов’язково. Одиниця вимірювання ефективності, яку потрібно повернути:

  • PERCENT (за замовчуванням)

temperature#

temperature повертає температуру двигуна або групи двигунів.

Температура двигуна показує, наскільки нагрівся двигун або група двигунів. Вища температура означає, що двигун або група двигунів нагріваються під час роботи. Для повної продуктивності двигун повинен залишатися нижче 55°C.

Якщо двигун або група двигунів перегріються, вони знизять свій максимальний струм для самозахисту. При 70°C двигун зупиниться, доки не охолоне.

Це можна використовувати для перевірки, чи не перегрівається двигун або група двигунів під час повторюваних рухів, тривалих пробіжок або коли вони тиснуть на якийсь предмет.

Usage:
motor_1.temperature(units)

Параметри

Опис

units

Необов’язково. Одиниця вимірювання температури, яку потрібно повернути:

  • TemperatureUnits.CELSIUS (за замовчуванням)
  • TemperatureUnits.FAHRENHEIT
  • PERCENT

count#

count повертає кількість двигунів у групі двигунів.

Примітка: Цей метод працюватиме лише з групою двигунів.

Usage:
motor_group_1.count()

Параметри

Опис

Цей метод не має параметрів.

get_timeout#

get_timeout повертає поточний час очікування (timeout) двигуна або групи двигунів у мілісекундах.

Usage:
motor_1.get_timeout()

Параметри

Опис

Цей метод не має параметрів.

Конструктори#

Конструктори використовуються для ручного створення об’єктів Motor та MotorGroup поза вікном Devices.

Motor#

Motor створює двигун.

Usage:
Motor(port, gears, reverse)

Параметр

Опис

port

Розумний порт, до якого підключено двигун, записаний як Ports.PORTx, де x – номер порту.

gears

Необов’язково. Передавальне число двигуна:

  • GearSetting.RATIO_18_1 (за замовчуванням) — передаточне число 18:1
  • GearSetting.RATIO_36_1 — передаточне число 36:1
  • GearSetting.RATIO_6_1 — передаточне число 6:1

reverse

Необов’язково. Встановлює, чи напрямок обертання двигуна є зворотним:

  • True — Змушує FORWARD обертатися за годинниковою стрілкою.
  • False (за замовчуванням) — Змушує FORWARD обертатися проти годинникової стрілки.

# Create a Motor in Port 1 with default values
motor_1 = Motor(Ports.PORT1)

"""
Create a motor with the following values:
- In Port 1
- 36:1 ratio
- Reversed
"""
motor_1 = Motor(Ports.PORT1, GearSetting.RATIO_36_1, True)

MotorGroup#

MotorGroup створює групу двигунів.

Usage:
MotorGroup(motors)

Параметр

Опис

motors

Назви раніше створених об’єктів Motor для додавання до групи двигунів, розділені комами (,). До групи можна додати до 12 об’єктів Motor.

# Create the Motors
motor_1 = Motor(Ports.PORT1)
motor_2 = Motor(Ports.PORT2)

# Create a Motor Group
motor_group_1 = MotorGroup(motor_1, motor_2)