Контролер#

Вступ#

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

Нижче наведено список усіх доступних методів:

Геттери – зчитують стан кнопки, джойстика та з’єднання.

  • pressing – Повертає значення, якщо наразі натиснуто певну кнопку.

  • position – Повертає положення джойстика вздовж заданої осі.

  • is_drone_connected – Повертає, чи підключено контролер до дрона.

  • get_battery_level – Повертає рівень заряду батареї контролера.

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

  • pressed – Виконує функцію при натисканні вказаної кнопки.

  • released – Виконує функцію, коли відпускається вказана кнопка.

  • changed – Виконує функцію, коли положення джойстика змінюється вздовж заданої осі.

Геттери#

pressing#

pressing повертає логічне значення, яке вказує, чи натиснуто певну кнопку на контролері. Цей метод потрібно викликати для певного об’єкта кнопки, такого як button5 (повний список об’єктів кнопок див. нижче).

  • True - Натискається зазначена кнопка.

  • False - Вказана кнопка не натискається.

Використання:
Одну з восьми доступних кнопок, пронумерованих від 5 до 12, можна використовувати з цим методом, як показано нижче:

Кнопка

Команда

button5

controller.button5.pressing() — Button 5

button6

controller.button6.pressing() — Button 6

button7

controller.button7.pressing() — Button 7

button8

controller.button8.pressing() — Button 8

button9

controller.button9.pressing() — Button 9

button10

controller.button10.pressing() — Button 10

button11

controller.button11.pressing() — Button 11

button12

controller.button12.pressing() — Button 12

Контролер дрона VEX AIR, на якому зображено кнопки з 5 по 12. Кнопки 5 та 6 розташовані на задній частині правого боку контролера, перпендикулярно до джойстика. Кнопки 7 та 8 знаходяться в тому ж положенні з лівого боку. Кнопки з 9 по 12 розташовані на нижній поверхні контролера, причому 9 знаходиться у верхньому правому куті над 10, а 11 — у верхньому лівому куті над 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.

Вісь

Команда

axis1

controller.axis1.position() — Вертикальна вісь лівого джойстика

axis2

controller.axis2.position() — Ліва горизонтальна вісь джойстика

axis3

controller.axis3.position() — Права горизонтальна вісь джойстика

axis4

controller.axis4.position() — Вертикальна вісь правого джойстика

Контролер дрона VEX AIR з виділеними навколо лівого джойстика мітками Осі 1 та 2, а також мітками Осі 3 та 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.

Кнопка

Команда

button5

controller.button5.pressing() — Button 5

button6

controller.button6.pressing() — Button 6

button7

controller.button7.pressing() — Button 7

button8

controller.button8.pressing() — Button 8

button9

controller.button9.pressing() — Button 9

button10

controller.button10.pressing() — Button 10

button11

controller.button11.pressing() — Button 11

button12

controller.button12.pressing() — Button 12

Контролер дрона VEX AIR, на якому зображено кнопки з 5 по 12. Кнопки 5 та 6 розташовані на задній частині правого боку контролера, перпендикулярно до джойстика. Кнопки 7 та 8 знаходяться в тому ж положенні з лівого боку. Кнопки з 9 по 12 розташовані на нижній поверхні контролера, причому 9 знаходиться у верхньому правому куті над 10, а 11 — у верхньому лівому куті над 12.

Параметри

Опис

callback

Попередньо визначена function, яка запускатиметься щоразу, коли натискається вказана кнопка.

arg

Необов’язково. Кортеж 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.

Кнопка

Команда

button5

controller.button5.pressing() — Button 5

button6

controller.button6.pressing() — Button 6

button7

controller.button7.pressing() — Button 7

button8

controller.button8.pressing() — Button 8

button9

controller.button9.pressing() — Button 9

button10

controller.button10.pressing() — Button 10

button11

controller.button11.pressing() — Button 11

button12

controller.button12.pressing() — Button 12

Контролер дрона VEX AIR, на якому зображено кнопки з 5 по 12. Кнопки 5 та 6 розташовані на задній частині правого боку контролера, перпендикулярно до джойстика. Кнопки 7 та 8 знаходяться в тому ж положенні з лівого боку. Кнопки з 9 по 12 розташовані на нижній поверхні контролера, причому 9 знаходиться у верхньому правому куті над 10, а 11 — у верхньому лівому куті над 12.

Параметри

Опис

callback

Попередньо визначена function, яка запускатиметься щоразу, коли відпускається зазначена кнопка.

arg

Необов’язково. Кортеж 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.

Вісь

Команда

axis1

controller.axis1.position() — Вертикальна вісь лівого джойстика

axis2

controller.axis2.position() — Ліва горизонтальна вісь джойстика

axis3

controller.axis3.position() — Права горизонтальна вісь джойстика

axis4

controller.axis4.position() — Вертикальна вісь правого джойстика

Контролер дрона VEX AIR з виділеними навколо лівого джойстика мітками Осі 1 та 2, а також мітками Осі 3 та 4, виділеними навколо правого джойстика.

Параметри

Опис

callback

Попередньо визначена function, яка запускається щоразу, коли положення джойстика змінюється вздовж заданої осі.

arg

Необов’язково. Кортеж 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)