Мотор#
Вступ#
Motors and motor groups control how parts of a robot move. A Motor controls one configured IQ Smart Motor, while a MotorGroup controls multiple configured IQ Smart Motors together so they move in tandem. Motors and motor groups can be used to raise an arm, turn a claw, spin a wheel, or move another part of a build. Two motors can work together as a drivetrain to move and turn the whole robot.
Кожен двигун або група двигунів налаштовується у вікні «Пристрої». Залежно від збірки, назви двигунів та груп двигунів можуть змінюватися. На цій сторінці як приклади назв використовуються motor_1 та motor_group_1 За потреби замініть їх власними налаштованими назвами.
За замовчуванням, FORWARD обертає двигун проти годинникової стрілки, а REVERSE обертає двигун за годинниковою стрілкою. Якщо двигун налаштовано на реверс, ці напрямки зміняться.
Існує багато способів кодування двигунів та груп двигунів. Нижче наведено список усіх методів Motor та MotorGroup:
Дії — Зупинити та розкрутити двигуни й групи двигунів.
spin— Обертає двигун або групу двигунів вперед або назад безкінечно.spin_for— Обертає двигун або групу двигунів на задану відстань.spin_to_position— Обертає двигун або групу двигунів у певне положення.stop— Зупиняє обертання двигуна або групи двигунів.
Мутатори — налаштування параметрів двигуна та групи двигунів.
set_velocity— Вказує двигуну або групі двигунів швидкість обертання.set_max_torque— Встановлює, наскільки сильно двигун або група двигунів можуть обертатися під час обертання.set_position— Змінює поточне положення двигуна або групи двигунів на нове значення.set_stopping— Встановлює спосіб зупинки руху двигуна або групи двигунів: гальмуванням, рухом по інерції або утримуванням.set_timeout— Встановлює, скільки часу двигун або група двигунів намагатимуться завершити рух.set_reversed— Змінює, чи змінюється напрямок обертання двигуна на зворотний.reset_position— Змінює поточну позицію двигуна або групи двигунів на 0.
Геттери — Перевірка стану двигуна та групи двигунів.
position— Повертає поточну позицію двигуна або групи двигунів.velocity— Повертає швидкість обертання двигуна або групи двигунів.current— Повертає силу електричного струму, що споживається двигуном або групою двигунів.is_done— Повертає у вигляді логічного значення, чи завершив рух двигун або група двигунів.is_spinning— Повертає, чи обертається двигун або група двигунів, у вигляді логічного значення.direction— Повертає напрямок обертання двигуна або групи двигунів.power— Повертає кількість потужності, яку використовує двигун або група двигунів.torque— Повертає крутний момент, який використовує двигун або група двигунів.efficiency— Повертає, наскільки ефективно двигун або група двигунів використовує енергію.temperature— Повертає температуру двигуна або групи двигунів.count— Повертає кількість двигунів у групі двигунів.get_timeout— Повертає поточну тривалість тайм-ауту двигуна або групи двигунів.
Конструктори — Ручна ініціалізація та налаштування двигунів і груп двигунів.
Motor— Створює двигун.MotorGroup— Створює групу двигунів.
Дії#
spin#
spin обертає двигун або групу двигунів вперед або назад безкінечно. Двигун або група двигунів продовжуватимуть обертатися, доки не буде виконано іншу дію, наприклад, обертання в іншому напрямку або зупинка.
Usage:
motor_1.spin(direction, velocity, units)
Параметри |
Опис |
|---|---|
|
Напрямок обертання двигуна або групи двигунів: |
|
Необов’язково. Швидкість обертання від 0% до 100% при використанні |
|
Необов’язково. Одиниця вимірювання швидкості:
|
# Spin the motor forward, 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)
Параметри |
Опис |
|---|---|
|
Напрямок обертання двигуна або групи двигунів: |
|
Відстань, на яку обертається двигун або група двигунів. Це може бути ціле число |
|
Необов’язково. Одиниця вимірювання відстані: |
|
Необов’язково. Швидкість обертання від 0% до 100% при використанні |
|
Необов’язково. Одиниця вимірювання швидкості:
|
|
Необов’язково.
|
# Spin the motor forward, then put it
# at 90 degrees
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.spin_to_position(90, DEGREES)
# Spin the motor at different velocities
# Using default velocity
motor_1.spin_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Spin slower
motor_1.spin_for(REVERSE, 150, MM, 20, PERCENT)
wait(1, SECONDS)
# Spin faster
motor_1.spin_for(FORWARD, 150, MM, 100, PERCENT)
spin_to_position#
spin_to_position обертає двигун або групу двигунів у певне положення.
Положення двигуна або групи двигунів – це відстань його обертання, що вимірюється в DEGREES або TURNSОдин оберт дорівнює 360 градусам. На початку проекту положення двигуна або групи двигунів встановлюється на 0 градусів. Положення двигуна або групи двигунів також можна встановити за допомогою методу set_position.
Значення положення є абсолютними. Це означає, що напрямок обертання залежить від поточного положення двигуна або групи двигунів.
Наприклад, якщо двигун або група двигунів починають обертатися з кута 0 градусів і обертаються до положення 720 градусів, вони обертатимуться вперед на два оберти. Якщо потім вони обертатимуться до положення 360 градусів, вони обертатимуться назад на один оберт, оскільки 360 менше за 720.
Usage:
motor_1.spin_to_position(rotation, units, velocity, units_v, wait)
Параметри |
Опис |
|---|---|
|
Значення позиції, до якої обертатиметься двигун або група двигунів. Це може бути ціле число |
|
Одиниця позиції: |
|
Необов’язково. Швидкість обертання від 0% до 100% при використанні |
|
Необов’язково. Одиниця вимірювання швидкості:
|
|
Необов’язково.
|
# Spin the motor forward, then
# put it at 90 degrees
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.spin_to_position(90, DEGREES)
# Spin forward then quickly reverse
# to 0 degrees
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.spin_to_position(0, DEGREES, 100, PERCENT, wait=True)
stop#
stop зупиняє обертання двигуна або групи двигунів.
Usage:
motor_1.stop(mode)
Параметри |
Опис |
|---|---|
|
Необов’язково. Як зупиняться двигун або група двигунів:
|
# Spin the motor forward, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()
# Spin the motor and coast to a stop
motor_1.set_velocity(100, PERCENT)
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.stop(COAST)
Мутатори#
set_velocity#
set_velocity вказує двигуну або групі двигунів, з якою швидкістю обертатися. Вищий відсоток змушує двигун або групу двигунів обертатися швидше, а нижчий відсоток змушує двигун або групу двигунів обертатися повільніше.
Кожен проект починається з того, що кожен двигун або група двигунів обертаються зі швидкістю 50% за замовчуванням.
Примітка: Вища швидкість змушує двигун або групу двигунів обертатися швидше, але це може бути менш точно. Нижча швидкість змушує двигун або групу двигунів обертатися повільніше, але це може бути точнішим.
Usage:
motor_1.set_velocity(velocity, units)
Параметри |
Опис |
|---|---|
|
Швидкість обертання від 0% до 100% при використанні |
|
Необов’язково. Одиниця вимірювання швидкості:
|
# Spin the motor at different velocities
# Using default velocity
motor_1.spin_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Spin slower
motor_1.set_velocity(20, PERCENT)
motor_1.spin_for(REVERSE, 150, MM)
wait(1, SECONDS)
# Spin faster
motor_1.set_velocity(100, PERCENT)
motor_1.spin_for(FORWARD, 150, MM)
set_max_torque#
Крутний момент показує, наскільки сильно двигун або група двигунів може штовхати або тягнути під час обертання.
set_max_torque встановлює максимальний крутний момент, який дозволяється використовувати двигуну або групі двигунів.
Вищий відсоток дозволяє двигуну або групі двигунів тиснути сильніше, наприклад, під час підняття важкого предмета. Нижчий відсоток обмежує силу, з якою може тиснути двигун або група двигунів. Це може допомогти захистити робота, якщо двигун або група двигунів застрягнуть або досягнуть межі можливостей для переміщення.
Кожен проект починається з крутного моменту кожного двигуна або групи двигунів, встановленого за замовчуванням на рівні 50%.
Usage:
motor_1.set_max_torque(value, units)
Параметри |
Опис |
|---|---|
|
Максимальний крутний момент, який може використовувати двигун або група двигунів. Це може бути |
|
Одиниця вимірювання крутного моменту:
|
# Spin the motor at different torque values
# Default
motor_1.spin_to_position(45, DEGREES)
# Spin at a lower torque
motor_1.set_max_torque(20, PERCENT)
motor_1.spin_to_position(0, DEGREES)
# Spin at the max torque
motor_1.set_max_torque(100, PERCENT)
motor_1.spin_to_position(45, DEGREES)
set_position#
Положення двигуна або групи двигунів – це те, наскільки він обертувався, вимірюється в DEGREES або TURNSОдин оберт дорівнює 360 градусам. set_position змінює поточне положення двигуна або групи двигунів на нове значення.
Наприклад, якщо двигун або група двигунів оберталися на 180 градусів, встановлення положення на 0 градусів скине це положення зі 180 на 0 градусів. Потім двигун або група двигунів можуть обертатися в положення на основі цього нового значення.
Usage:
motor_1.set_position(position, units)
Параметри |
Опис |
|---|---|
|
Значення позиції, яке потрібно встановити для двигуна або групи двигунів. Це може бути |
|
Одиниця позиції: |
# Position the motor at the
# new 0 degrees
motor_1.set_position(180, DEGREES)
motor_1.spin_to_position(0)
set_stopping#
set_stopping встановлює, як двигун або група двигунів зупинятимуть рух: гальмуванням, рухом на вильоті або утримуванням.
Usage:
motor_1.set_stopping(mode)
Параметри |
Опис |
|---|---|
|
Як зупиниться двигун або група двигунів:
|
# Spin the motor and coast to a stop
motor_1.set_velocity(100, PERCENT)
motor_1.set_stopping(COAST)
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.stop()
set_timeout#
set_timeout встановлює час, протягом якого двигун або група двигунів намагатимуться завершити рух. Якщо двигун або група двигунів не зможе завершити рух за цей час, вони припинять спроби та перейдуть до наступного рядка коду. Це запобігає зависанню двигуна або групи двигунів на русі.
Usage:
motor_1.set_timeout(value, units)
Параметри |
Опис |
|---|---|
|
Кількість часу, протягом якого двигун або група двигунів можуть намагатися завершити рух. Це може бути додатне ціле число |
|
Необов’язково. Одиниця часу:
|
# Set a 0.5 second timeout for motor actions
motor_1.set_timeout(0.5, SECONDS)
# Try a long move that will time out early
motor_1.spin_for(FORWARD, 2, TURNS)
motor_1.spin_to_position(0, DEGREES)
set_reversed#
set_reversed змінює, чи напрямок обертання двигуна реверсований. Цей метод працює так само, як встановлення параметра reverse на True під час побудови двигуна Motor.
Примітка: Цей метод працюватиме лише з двигуном, а не з групою двигунів.
Usage:
motor_1.set_reversed(value)
Параметри |
Опис |
|---|---|
|
Чи змінено напрямок обертання двигуна на зворотний:
|
# Change the reverse direction while spinning
motor_1.spin_for(FORWARD, 45)
motor_1.set_reversed(True)
motor_1.spin_for(FORWARD, 45)
reset_position#
reset_position змінює поточне положення двигуна або групи двигунів на 0.
Usage:
motor_1.reset_position()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
# Spin to 360 degrees, then reset the encoder
motor_1.spin_to_position(360, DEGREES)
motor_1.reset_position()
# Move again to 90 degrees from new zero point
motor_1.spin_to_position(90, DEGREES)
Геттери#
position#
Положення двигуна або групи двигунів – це те, наскільки він обертувався, вимірюється в DEGREES або TURNSОдин оберт дорівнює 360 градусам. position повертає поточне положення двигуна або групи двигунів.
На початку проекту положення двигуна або групи двигунів встановлюється на 0 градусів. Якщо двигун або група двигунів обертається на один оберт вперед, положення становитиме 360 градусів або 1 оберт. Якщо двигун або група двигунів обертається в іншому напрямку, положення буде від’ємним.
Usage:
motor_1.position(units)
Параметри |
Опис |
|---|---|
|
Необов’язково. Одиниця вимірювання для повернення положення двигуна або групи двигунів: |
# Spin the motor and display the
# ending position
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()
brain.screen.print(motor_1.position())
velocity#
velocity повертає швидкість обертання двигуна або групи двигунів.
Додатне значення означає, що двигун або група двигунів обертається вперед. Від’ємне значення означає, що вони обертаються назад.
Usage:
motor_1.velocity(units)
Параметри |
Опис |
|---|---|
|
Необов’язково. Одиниця вимірювання швидкості, яку потрібно повернути:
|
current#
current повертає силу електричного струму, що використовується двигуном або групою двигунів, виміряну в амперах від 0,0 до 1,2 А. Струм – це кількість електроенергії, що протікає через двигун або групу двигунів.
Вище значення струму означає, що двигун або група двигунів використовує більше електричного струму. Це може статися, коли двигун або група двигунів піднімає щось важке, штовхає предмет або намагається рухатися, коли він застряг.
Це можна використовувати для перевірки, чи виникають проблеми з двигуном або групою двигунів під час руху. Якщо струм залишається високим, двигун може нагріватися або використовувати енергію менш ефективно.
Usage:
motor_1.current(units)
Параметри |
Опис |
|---|---|
|
Необов’язково. Поточна одиниця вимірювання, яку потрібно повернути:
|
is_done#
is_done повертає у вигляді логічного значення, чи завершив рух двигун або група двигунів. Це можна використовувати для керування часом інших дій на основі руху двигуна.
True— Рух двигуна або групи двигунів завершено.False— Двигун або група двигунів все ще рухається.
Цей метод працює разом із наступними методами руху, які мають параметр wait : spin_for та spin_to_position.
Usage:
motor_1.is_done()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
is_spinning#
is_spinning повертає, чи обертається двигун або група двигунів, у вигляді логічного значення. Це можна використовувати для керування часом інших дій на основі руху двигуна.
True— Двигун або група двигунів обертається.False— Двигун або група двигунів не обертається.
Цей метод працює разом із наступними методами руху, які мають параметр wait : spin_for та spin_to_position.
Usage:
motor_1.is_spinning()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
direction#
direction повертає поточний напрямок обертання двигуна або групи двигунів.
FORWARDREVERSE
Usage:
motor_1.direction()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
power#
power повертає кількість потужності, яку використовує двигун або група двигунів, у ватах. Потужність показує, як швидко двигун або група двигунів використовує енергію.
Вище значення потужності означає, що двигун або група двигунів використовують енергію швидше. Це може статися, коли двигун або група двигунів піднімає щось важке, штовхає предмет або намагається рухатися, коли він застряг.
Це можна використовувати для порівняння рухів або перевірки, чи несправний двигун чи група двигунів. Якщо потужність залишається високою, двигун може нагріватися або використовувати енергію менш ефективно.
Usage:
motor_1.power()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
torque#
Крутний момент показує, наскільки сильно крутиться, штовхається або тягне двигун або група двигунів під час обертання.
torque повертає величину крутного моменту, який використовує двигун або група двигунів.
Вище значення крутного моменту означає, що двигун або група двигунів штовхає або тягне сильніше. Це може статися, коли двигун або група двигунів піднімає щось важке, штовхає предмет або намагається рухатися, коли він застряг.
Це можна використовувати для перевірки наявності проблем з мотором або моторною групою, або для порівняння того, скільки поштовху потрібно для різних рухів.
Щоб встановити крутний момент двигуна або групи двигунів, використовуйте set_max_torque.
Usage:
motor_1.torque(units)
Параметри |
Опис |
|---|---|
|
Одиниця вимірювання крутного моменту, яку потрібно повернути:
|
efficiency#
efficiency повертає, наскільки ефективно двигун або група двигунів використовує потужність, у відсотках від 0% до 100%.
Ефективність показує, яка частина потужності двигуна або групи двигунів використовується для руху. Вище значення ефективності означає, що для руху використовується більше потужності двигуна або групи двигунів. Нижче значення ефективності може мати місце, коли двигун або група двигунів працюють інтенсивно, але мало рухаються, наприклад, коли вони застрягли або штовхаються об якийсь об’єкт.
Це можна використовувати для порівняння рухів або перевірки, чи двигун або група двигунів витрачає енергію даремно, замість того, щоб використовувати її для руху.
Usage:
motor_1.efficiency()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
temperature#
temperature повертає температуру двигуна або групи двигунів.
Температура двигуна показує, наскільки нагрівся двигун або група двигунів. Вища температура означає, що двигун або група двигунів нагріваються під час роботи. Для повної продуктивності двигун повинен залишатися нижче 55 градусів Цельсія.
Якщо двигун або група двигунів перегріються, вони знизять свій максимальний струм для самозахисту. При температурі 70 градусів Цельсія двигун зупиниться, доки не охолоне.
Це можна використовувати для перевірки, чи не перегрівається двигун або група двигунів під час повторюваних рухів, тривалих пробіжок або коли вони тиснуть на якийсь предмет.
Usage:
motor_1.temperature(units)
Параметри |
Опис |
|---|---|
|
Необов’язково. Одиниця вимірювання температури, яку потрібно повернути:
|
count#
count повертає кількість двигунів у групі двигунів.
Примітка: Цей метод працюватиме лише з групою двигунів, а не з двигуном.
Usage:
motor_group_1.count()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
get_timeout#
get_timeout повертає поточний тайм-аут двигуна або групи двигунів у мілісекундах.
Примітка: Цей метод працюватиме лише з двигуном, а не з групою двигунів.
Usage:
motor_1.get_timeout()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
Конструктори#
Конструктори використовуються для ручного створення об’єктів Motor та MotorGroup поза вікном Devices.
Motor#
Motor створює двигун.
Usage:
motor_1 = Motor(smartport, gears, reverse)
Параметр |
Опис |
|---|---|
|
Розумний порт, до якого підключено двигун, записаний як |
|
Необов’язково. Передавальне число двигуна:
|
|
Необов’язково. Встановлює, чи напрямок обертання двигуна реверсовано:
|
# Create a reversed motor
motor_1 = Motor(Ports.PORT1, 1.0, True)
Motor Group#
MotorGroup створює групу двигунів.
Usage:
motor_group_1 = MotorGroup(motors)
Параметр |
Опис |
|---|---|
|
Назви раніше створених об’єктів |
# Create two motors
motor_group_1_motor_a = Motor(Ports.PORT1, False)
motor_group_1_motor_b = Motor(Ports.PORT6, True)
# Create a motor group with those motors
motor_group_1 = MotorGroup(motor_group_1_motor_a, motor_group_1_motor_b)