Контроллер#

Введение#

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

Настроенные действия контроллера — это поведение контроллера, заданное в меню «Устройства». Используйте remote_control_code_enabled , чтобы временно включить или отключить эти настроенные действия в рамках проекта.

На этой странице в качестве примера имени контроллера используется controller При необходимости замените его на собственное имя.

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

Действие — Включение или выключение настроенных действий контроллера.

  • remote_control_code_enabled — Включает или отключает действия контроллера, настроенные в меню «Устройства».

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

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

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

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

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

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

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

Конструктор — Создание объекта контроллера вручную.

  • Controller — Создает объект Controller.

Действие#

remote_control_code_enabled#

remote_control_code_enabled — это переменная, которая включает или отключает действия контроллера, настроенные в меню «Устройства». Действия, настроенные контроллером, включены по умолчанию.

Usage:
remote_control_code_enabled = state

Ценить

Описание

True

Включает действия, настроенные контроллером.

False

Отключает действия, настроенные контроллером.

# Drive forward or backward using the left joystick
remote_control_code_enabled = False

while True:
    if controller.axis3.position() > 0:
        drivetrain.drive(FORWARD)
    elif controller.axis3.position() < 0:
        drivetrain.drive(REVERSE)
    # Press A to use controller configured actions again
    elif controller.buttonA.pressing():
        break
    else:
        drivetrain.stop()

    wait(20, MSEC)

remote_control_code_enabled = True

Геттеры#

.pressing#

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

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

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

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

Передняя и верхняя стороны контроллера EXP с джойстиками, кнопками со стрелками и кнопками действий, выделенными желтым цветом. На поверхности контроллера расположены два джойстика слева и справа, кнопки со стрелками вверх и вниз слева и кнопки A и B справа. На верхней части контроллера слева расположены кнопки L1 и L2, а справа — кнопки R1 и R2.

Кнопка

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

buttonA

controller.buttonA.pressing() — Кнопка A

buttonB

controller.buttonB.pressing() — Кнопка B

buttonDown

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

buttonUp

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

buttonL1

controller.buttonL1.pressing() — Кнопка L1

buttonL2

controller.buttonL2.pressing() — Кнопка L2

buttonL3

controller.buttonL3.pressing() — Кнопка L3

buttonR1

controller.buttonR1.pressing() — Кнопка R1

buttonR2

controller.buttonR2.pressing() — Кнопка R2

buttonR3

controller.buttonR3.pressing() — Кнопка R3

Параметры

Описание

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

# Turn right while L1 is pressed
while True:
    if controller.buttonL1.pressing():
        drivetrain.turn(RIGHT)
    else:
        drivetrain.stop()

    wait(20, MSEC)

.position#

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

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

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

Передняя сторона контроллера EXP с номерами осей джойстика, выделенными красным цветом. На поверхности контроллера левый джойстик обозначен как Ось 4 для движения влево и вправо и Ось 3 для движения вверх и вниз, а правый джойстик обозначен как Ось 1 для движения влево и вправо и Ось 2 для движения вверх и вниз.

Ось

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

axis1

controller.axis1.position() — Горизонтальная ось правого джойстика

axis2

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

axis3

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

axis4

controller.axis4.position() — Горизонтальная ось левого джойстика

Параметры

Описание

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

# Turn with the left joystick
remote_control_code_enabled = False

while True:
    if controller.axis4.position() > 10:
        drivetrain.turn(RIGHT)
    elif controller.axis4.position() < -10:
        drivetrain.turn(LEFT)
    else:
        drivetrain.stop()

    wait(20, MSEC)

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

.pressed#

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

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

Передняя и верхняя стороны контроллера EXP с джойстиками, кнопками со стрелками и кнопками действий, выделенными желтым цветом. На поверхности контроллера расположены два джойстика слева и справа, кнопки со стрелками вверх и вниз слева и кнопки A и B справа. На верхней части контроллера слева расположены кнопки L1 и L2, а справа — кнопки R1 и R2.

Кнопка

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

buttonA

controller.buttonA.pressed(callback, arg) — Кнопка A

buttonB

controller.buttonB.pressed(callback, arg) — Кнопка B

buttonDown

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

buttonUp

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

buttonL1

controller.buttonL1.pressed(callback, arg) — Кнопка L1

buttonL2

controller.buttonL2.pressed(callback, arg) — Кнопка L2

buttonL3

controller.buttonL3.pressed(callback, arg) — Кнопка L3

buttonR1

controller.buttonR1.pressed(callback, arg) — Кнопка R1

buttonR2

controller.buttonR2.pressed(callback, arg) — Кнопка R2

buttonR3

controller.buttonR3.pressed(callback, arg) — Кнопка R3

Параметр

Описание

callback

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

arg

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

# Drive forward when R1 is pressed
def drive_forward():
    drivetrain.drive_for(FORWARD, 200, MM)

controller.buttonR1.pressed(drive_forward)

.released#

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

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

Передняя и верхняя стороны контроллера EXP с джойстиками, кнопками со стрелками и кнопками действий, выделенными желтым цветом. На поверхности контроллера расположены два джойстика слева и справа, кнопки со стрелками вверх и вниз слева и кнопки A и B справа. На верхней части контроллера слева расположены кнопки L1 и L2, а справа — кнопки R1 и R2.

Кнопка

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

buttonA

controller.buttonA.released(callback, arg) — Кнопка A

buttonB

controller.buttonB.released(callback, arg) — Кнопка B

buttonDown

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

buttonUp

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

buttonL1

controller.buttonL1.released(callback, arg) — Кнопка L1

buttonL2

controller.buttonL2.released(callback, arg) — Кнопка L2

buttonL3

controller.buttonL3.released(callback, arg) — Кнопка L3

buttonR1

controller.buttonR1.released(callback, arg) — Кнопка R1

buttonR2

controller.buttonR2.released(callback, arg) — Кнопка R2

buttonR3

controller.buttonR3.released(callback, arg) — Кнопка R3

Параметр

Описание

callback

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

arg

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

# Stop driving when R1 is released
def stop_driving():
    drivetrain.stop()

controller.buttonR1.released(stop_driving)

.changed#

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

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

Передняя сторона контроллера EXP с номерами осей джойстика, выделенными красным цветом. На поверхности контроллера левый джойстик обозначен как Ось 4 для движения влево и вправо и Ось 3 для движения вверх и вниз, а правый джойстик обозначен как Ось 1 для движения влево и вправо и Ось 2 для движения вверх и вниз.

Ось

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

axis1

controller.axis1.changed(callback, arg) — Горизонтальная ось правого джойстика

axis2

controller.axis2.changed(callback, arg) — Вертикальная ось правого джойстика

axis3

controller.axis3.changed(callback, arg) — Вертикальная ось левого джойстика

axis4

controller.axis4.changed(callback, arg) — Горизонтальная ось левого джойстика

Параметр

Описание

callback

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

arg

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

# Play a sound when the left joystick moves
def beep():
    brain.play_sound(SoundType.TADA)

controller.axis3.changed(beep)

Строители#

Controller#

Controller создает объект Controller. Создание объекта Controller вручную необходимо только при настройке контроллера вне VEXcode.

Usage:
Controller()

Параметры

Описание

Этот конструктор не имеет параметров.

# Create a Controller object
my_controller = Controller()