Контроллер#
Введение#
Контроллер VEX IQ (2-го поколения) имеет кнопки и два джойстика. Методы контроллера могут использоваться для проверки нажатий кнопок, считывания движений джойстика, включения или отключения настроенных действий контроллера, а также для запуска функций при возникновении событий контроллера.
Блок управления IQ (2-го поколения) может подключаться как к контроллеру IQ (2-го поколения), так и к контроллеру IQ (1-го поколения). Для работы с контроллером IQ (1-го поколения) необходимо установить синий интеллектуальный радиомодуль.
Настроенные действия контроллера — это поведение контроллера, заданное в меню «Устройства». Используйте 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
Ценить |
Описание |
|---|---|
|
Включает действия, настроенные контроллером. |
|
Отключает действия, настроенные контроллером. |
# Use custom controller code, then re-enable configured actions
remote_control_code_enabled = False
while True:
if controller.axisA.position() > 0:
drivetrain.drive(FORWARD)
elif controller.axisA.position() < 0:
drivetrain.drive(REVERSE)
elif controller.buttonEUp.pressing():
break
else:
drivetrain.stop()
wait(20, MSEC)
remote_control_code_enabled = True
Геттеры#
.pressing#
.pressing возвращает значение, указывающее, нажата ли в данный момент конкретная кнопка на контроллере. Этот метод необходимо вызывать для конкретного объекта кнопки, например, controller.buttonEUp.
True— Указанная кнопка нажата.False— Указанная кнопка не нажата.
Использование:
С этим методом можно использовать один из доступных объектов кнопок:

Кнопка |
Командование |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
# Turn right while E Up is held
while True:
if controller.buttonEUp.pressing():
drivetrain.turn(RIGHT)
else:
drivetrain.stop()
wait(20, MSEC)
.position#
.position возвращает положение оси джойстика в виде числа от -100 до 100.
Этот метод необходимо вызывать для конкретного объекта оси, например, controller.axisA.
Использование:
С этим методом можно использовать один из доступных объектов оси:

Ось |
Командование |
|---|---|
|
|
|
|
|
|
|
|
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
# Turn with the left joystick
remote_control_code_enabled = False
while True:
if controller.axisB.position() > 10:
drivetrain.turn(RIGHT)
elif controller.axisB.position() < -10:
drivetrain.turn(LEFT)
else:
drivetrain.stop()
wait(20, MSEC)
Обратные звонки#
.pressed#
.pressed запускает функцию при нажатии указанной кнопки. После использования функция будет запускаться автоматически каждый раз при нажатии этой кнопки.
Использование:
С этим методом можно использовать один из доступных объектов кнопок:

Кнопка |
Командование |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Параметр |
Описание |
|---|---|
|
Предварительно определенная функция, которая будет выполняться каждый раз при нажатии указанной кнопки. |
|
Необязательно. Кортеж, содержащий аргументы для передачи в функцию обратного вызова. См. Использование событий с параметрами для получения дополнительной информации. |
# Drive forward when E Up is pressed
def drive_forward():
drivetrain.drive_for(FORWARD, 100, MM)
controller.buttonEUp.pressed(drive_forward)
.released#
.released запускает функцию при отпускании указанной кнопки. После использования функция будет запускаться автоматически каждый раз при отпускании этой кнопки.
Использование:
С этим методом можно использовать один из доступных объектов кнопок:

Кнопка |
Командование |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Параметр |
Описание |
|---|---|
|
Предварительно определенная функция, которая будет выполняться каждый раз, когда указанная кнопка отпускается. |
|
Необязательно. Кортеж, содержащий аргументы для передачи в функцию обратного вызова. См. Использование событий с параметрами для получения дополнительной информации. |
# Stop driving when E Up is released
def stop_driving():
drivetrain.stop()
controller.buttonEUp.released(stop_driving)
.changed#
Функция .changed запускает функцию при изменении положения джойстика вдоль указанной оси. После использования функция будет запускаться автоматически каждый раз при изменении положения джойстика вдоль этой оси.
Использование:
С этим методом можно использовать один из доступных объектов оси:

Ось |
Командование |
|---|---|
|
|
|
|
|
|
|
|
Параметр |
Описание |
|---|---|
|
Предварительно определенная функция, которая запускается каждый раз, когда положение джойстика изменяется вдоль указанной оси. |
|
Необязательно. Кортеж, содержащий аргументы для передачи в функцию обратного вызова. См. Использование событий с параметрами для получения дополнительной информации. |
# Play a sound when the right joystick moves
def beep():
brain.play_sound(SoundType.TADA)
controller.axisD.changed(beep)
Строители#
Controller#
Controller создает объект Controller. Создание объекта Controller вручную необходимо только при настройке контроллера вне VEXcode.
Usage:
Controller()
Параметры |
Описание |
|---|---|
Этот конструктор не имеет параметров. |
# Create a Controller object
my_controller = Controller()