Контролер#
Вступ#
Контролер дрона VEX AIR має 12-кнопкове розташування клавіш і два джойстики. Ці входи дозволяють дрону розпізнавати натискання кнопок і рухи джойстика, забезпечуючи інтерактивне та швидке керування.
Нижче наведено список усіх доступних методів:
Геттери – зчитують стан кнопки, джойстика та з’єднання.
pressing– Повертає значення, якщо наразі натиснуто певну кнопку.position– Повертає положення джойстика вздовж заданої осі.is_drone_connected– Повертає, чи підключено контролер до дрона.get_battery_level– Повертає рівень заряду батареї контролера.
Зворотні виклики – реагують на зміни введення кнопок або джойстика.
Геттери#
pressing#
pressing повертає логічне значення, яке вказує, чи натиснуто певну кнопку на контролері. Цей метод потрібно викликати для певного об’єкта кнопки, такого як button5 (повний список об’єктів кнопок див. нижче).
True- Натискається зазначена кнопка.False- Вказана кнопка не натискається.
Використання:
Одну з восьми доступних кнопок, пронумерованих від 5 до 12, можна використовувати з цим методом, як показано нижче:
Кнопка |
Команда |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
# Take a picture when button 5 is pressed.
drone.take_off(climb_to=500)
while True:
# Fly using the controller sticks
drone.move_with_vectors(
forward=controller.axis4.position(),
rightward=controller.axis3.position(),
upward=controller.axis1.position(),
rotation=controller.axis2.position()
)
# Capture an image from the forward camera when button 5 is pressed.
if controller.button5.pressing():
drone.camera.capture_image(FORWARD_CAMERA)
wait(5, MSEC)
position#
position повертає положення зазначеної осі джойстика у відсотках від –100% до 100%.
Використання:
З цим методом можна використовувати одну з чотирьох доступних осей, пронумерованих від 1 до 4.
Вісь |
Команда |
|---|---|
|
|
|
|
|
|
|
|

Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
# Climb when the left joystick is moved up.
drone.take_off(climb_to=500)
while True:
if controller.axis1.position() > 0:
drone.climb(direction=UP, velocity=50)
else:
drone.hover()
wait(5, MSEC)
is_drone_connected#
is_drone_connected повертає логічне значення, яке вказує, чи підключено дрон.
True– Дрон підключено.False– Дрон не підключено.
Використання:
controller.is_drone_connected()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
# Print controller connection status on screen.
while True:
if controller.is_drone_connected():
controller.screen.clear_screen()
controller.screen.set_cursor(1, 1)
controller.screen.print("Controller connected")
wait(0.5, SECONDS)
get_battery_level#
get_battery_level повертає рівень заряду батареї контролера у відсотках від 0% до 100%.
Використання:
controller.get_battery_level()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
# Show controller's battery level.
if controller.get_battery_level() > 50:
controller.screen.print("Battery level ok")
else:
controller.screen.print("Battery level low")
Зворотні виклики#
pressed#
pressed запускає функцію при натисканні вказаної кнопки. Після використання функція запускатиметься автоматично щоразу, коли натискатиметься ця кнопка.
Використання:
За допомогою цього методу можна використовувати одну з восьми доступних кнопок, пронумерованих від 5 до 12.
Кнопка |
Команда |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

Параметри |
Опис |
|---|---|
|
Попередньо визначена function, яка запускатиметься щоразу, коли натискається вказана кнопка. |
|
Необов’язково. Кортеж tuple, що містить аргументи для передачі функції зворотного виклику. Див. Використання подій з параметрами для отримання додаткової інформації. |
# Take a picture when button 5 is pressed.
def take_picture():
drone.camera.capture_image(FORWARD_CAMERA)
# Run take_picture each time button 5 is pressed.
controller.button5.pressed(take_picture)
# Fly using the controller sticks.
drone.take_off(climb_to=500)
while True:
drone.move_with_vectors(
forward=controller.axis4.position(),
rightward=controller.axis3.position(),
upward=controller.axis1.position(),
rotation=controller.axis2.position()
)
wait(5, MSEC)
released#
released запускає функцію, коли зазначену кнопку відпущено. Після використання функція запускатиметься автоматично щоразу, коли цю кнопку відпускатимуть.
Використання:
За допомогою цього методу можна використовувати одну з восьми доступних кнопок, пронумерованих від 5 до 12.
Кнопка |
Команда |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

Параметри |
Опис |
|---|---|
|
Попередньо визначена function, яка запускатиметься щоразу, коли відпускається зазначена кнопка. |
|
Необов’язково. Кортеж tuple, що містить аргументи для передачі функції зворотного виклику. Див. Використання функцій з параметрами для отримання додаткової інформації. |
# Take a picture when button 5 is released.
def take_picture():
drone.camera.capture_image(FORWARD_CAMERA)
# Run take_picture each time button 5 is released.
controller.button5.released(take_picture)
# Fly using the controller sticks.
drone.take_off(climb_to=500)
while True:
drone.move_with_vectors(
forward=controller.axis4.position(),
rightward=controller.axis3.position(),
upward=controller.axis1.position(),
rotation=controller.axis2.position()
)
wait(5, MSEC)
changed#
changed запускає функцію, коли положення джойстика змінюється вздовж заданої осі. Після використання функція запускатиметься автоматично щоразу, коли положення джойстика змінюється вздовж цієї осі.
Використання:
З цим методом можна використовувати одну з чотирьох доступних осей, пронумерованих від 1 до 4.
Вісь |
Команда |
|---|---|
|
|
|
|
|
|
|
|

Параметри |
Опис |
|---|---|
|
Попередньо визначена function, яка запускається щоразу, коли положення джойстика змінюється вздовж заданої осі. |
|
Необов’язково. Кортеж tuple, що містить аргументи для передачі функції зворотного виклику. Див. Використання функцій з параметрами для отримання додаткової інформації. |
# Move forward when the left joystick moves.
def on_axis1_changed():
drone.move_for(direction=0, distance=200, velocity=50, units=MM)
drone.take_off(climb_to=500)
controller.axis1.changed(on_axis1_changed)