Контроллер#

Введение#

Контроллер VEX AIM One Stick имеет четыре кнопки и джойстик. Джойстик может перемещаться по двум осям, а также нажиматься как кнопка.

Методы контроллера могут использоваться для проверки нажатий кнопок, считывания движений джойстика, проверки состояния соединения и батареи, а также для запуска функций при возникновении событий контроллера.

Ниже приведён список всех методов:

Геттеры — считывают состояние кнопки, джойстика, соединения и батареи.

  • .pressing — Возвращает значение, указывающее, нажата ли указанная кнопка.

  • .position — Возвращает положение джойстика вдоль указанной оси.

  • is_connected — Возвращает значение, указывающее, подключен ли контроллер.

  • get_battery_level — Возвращает уровень заряда батареи контроллера.

Обратные вызовы — Запускают функции при изменении входных данных контроллера.

  • .pressed — Выполняет функцию при нажатии указанной кнопки.

  • .released — Выполняет функцию при отпускании указанной кнопки.

  • .changed — Выполняет функцию при изменении положения джойстика вдоль указанной оси.

Геттеры#

.pressing#

.pressing возвращает значение, указывающее, нажата ли в данный момент конкретная кнопка на контроллере. Этот метод необходимо вызывать для конкретного объекта кнопки, например, controller.button_up.

  • True — Указанная кнопка нажата.

  • False — Указанная кнопка не нажата.

Использование:
С этим методом можно использовать один из пяти доступных объектов кнопок:

Кнопка

Командование

button_up

controller.button_up.pressing() — Кнопка Вверх

button_down

controller.button_down.pressing() — Кнопка Вниз

button_left

controller.button_left.pressing() — Левая кнопка

button_right

controller.button_right.pressing() — Правая кнопка

button_stick

controller.button_stick.pressing() — Кнопка джойстика

Контроллер VEX AIM One Stick с джойстиком слева и четырьмя кнопками справа. Джойстик и четыре кнопки выделены.

Параметры

Описание

Этот метод не имеет параметров.

# Move forward while the Up button is being pressed
while True:
    if controller.button_up.pressing():
        robot.move_at(0)
    else:
        robot.stop_all_movement()

    wait(20, MSEC)

.position#

.position возвращает положение оси джойстика в виде числа от -100 до 100.

Этот метод необходимо вызывать для конкретного объекта оси, например, controller.axis1.

Использование:
С этим методом можно использовать один из двух доступных объектов оси:

Ось

Командование

axis1

controller.axis1.position() — Вертикальная ось

axis2

controller.axis2.position() — Горизонтальная ось

Контроллер VEX AIM с джойстиком слева и четырьмя кнопками справа. Оси 1 и 2 джойстика выделены.

Параметры

Описание

Этот метод не имеет параметров.

# Move forward when the joystick is moved up
while True:
    if controller.axis1.position() > 0:
        robot.move_at(0)
    else:
        robot.stop_all_movement()

    wait(20, MSEC)

is_connected#

is_connected возвращает значение, указывающее, подключен ли контроллер.

  • True — Контроллер подключен.

  • False — Контроллер не подключен.

Usage:
controller.is_connected()

Параметры

Описание

Этот метод не имеет параметров.

# Stop the robot if the controller disconnects
robot.move_at(0)

while True:
    if not controller.is_connected():
        robot.stop_all_movement()

    wait(100, MSEC)

get_battery_level#

get_battery_level возвращает уровень заряда батареи контроллера в виде числа от 0 до 100.

Usage:
controller.get_battery_level()

Параметры

Описание

Этот метод не имеет параметров.

# Display the controller's battery level
robot.screen.print(controller.get_battery_level())

Обратные звонки#

.pressed#

.pressed запускает функцию при нажатии указанной кнопки. После использования функция будет запускаться автоматически каждый раз при нажатии этой кнопки.

Использование:
С этим методом можно использовать один из пяти доступных объектов кнопок:

Кнопка

Командование

button_up

controller.button_up.pressed(callback, arg) — Кнопка Вверх

button_down

controller.button_down.pressed(callback, arg) — Кнопка Вниз

button_left

controller.button_left.pressed(callback, arg) — Левая кнопка

button_right

controller.button_right.pressed(callback, arg) — Правая кнопка

button_stick

controller.button_stick.pressed(callback, arg) — Кнопка джойстика

Контроллер VEX AIM One Stick с джойстиком слева и четырьмя кнопками справа. Джойстик и четыре кнопки выделены.

Параметр

Описание

callback

Предварительно определенная функция, которая будет выполняться каждый раз при нажатии указанной кнопки.

arg

Необязательно. Кортеж, содержащий аргументы для передачи в функцию обратного вызова. См. Использование событий с параметрами для получения дополнительной информации.

# Kick hard when the Up button is pressed
def kick_object():
    robot.kicker.kick(HARD)

controller.button_up.pressed(kick_object)

.released#

.released запускает функцию при отпускании указанной кнопки. После использования функция будет запускаться автоматически каждый раз при отпускании этой кнопки.

Использование:
С этим методом можно использовать один из пяти доступных объектов кнопок:

Кнопка

Командование

button_up

controller.button_up.released(callback, arg) — Кнопка Вверх

button_down

controller.button_down.released(callback, arg) — Кнопка Вниз

button_left

controller.button_left.released(callback, arg) — Левая кнопка

button_right

controller.button_right.released(callback, arg) — Правая кнопка

button_stick

controller.button_stick.released(callback, arg) — Кнопка джойстика

Контроллер VEX AIM One Stick с джойстиком слева и четырьмя кнопками справа. Джойстик и четыре кнопки выделены.

Параметр

Описание

callback

Предварительно определенная функция, которая будет выполняться каждый раз, когда указанная кнопка отпускается.

arg

Необязательно. Кортеж, содержащий аргументы для передачи в функцию обратного вызова. См. Использование событий с параметрами для получения дополнительной информации.

# Clear the screen after the Up button is released
def clear_screen():
    robot.screen.clear_screen()

controller.button_up.released(clear_screen)

robot.screen.print("Press Up, then")
robot.screen.next_row()
robot.screen.print("Release Up!")

.changed#

Функция .changed запускает функцию при изменении положения джойстика вдоль указанной оси. После использования функция будет запускаться автоматически каждый раз при изменении положения джойстика вдоль этой оси.

Использование:
С этим методом можно использовать один из двух доступных объектов оси:

Ось

Командование

axis1

controller.axis1.changed(callback, arg) — Вертикальная ось

axis2

controller.axis2.changed(callback, arg) — Горизонтальная ось

Контроллер VEX AIM с джойстиком слева и четырьмя кнопками справа. Оси 1 и 2 джойстика выделены.

Параметр

Описание

callback

Предварительно определенная функция, которая запускается каждый раз, когда положение джойстика изменяется вдоль указанной оси.

arg

Необязательно. Кортеж, содержащий аргументы для передачи в функцию обратного вызова. См. Использование событий с параметрами для получения дополнительной информации.

# Show an emoji when the joystick moves up or down
def move_joystick():
    robot.screen.show_emoji(CONFUSED)

controller.axis1.changed(move_joystick)