Контроллер#

Введение#

Контроллер 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

Ценить

Описание

True

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

False

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

# 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 — Указанная кнопка не нажата.

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

Вид спереди и сзади контроллера IQ 2-го поколения, все кнопки выделены желтым цветом. На поверхности контроллера расположены две кнопки джойстика в верхнем левом и правом углах: E вверх и вниз под левым джойстиком и F вверх и вниз под правым. На задней стороне контроллера расположены кнопки L вверх и вниз и R вверх и вниз соответственно слева и справа.

Кнопка

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

buttonEDown

controller.buttonEDown.pressing() — Кнопка E ▼

buttonEUp

controller.buttonEUp.pressing() — Кнопка E ▲

buttonFDown

controller.buttonFDown.pressing() — Кнопка F ▼

buttonFUp

controller.buttonFUp.pressing() — Кнопка F ▲

buttonL3

controller.buttonL3.pressing() — Кнопка левого джойстика, только для контроллера IQ (2-го поколения)

buttonLDown

controller.buttonLDown.pressing() — Кнопка L ▼

buttonLUp

controller.buttonLUp.pressing() — Кнопка L ▲

buttonR3

controller.buttonR3.pressing() — Кнопка правого джойстика, только для контроллера IQ (2-го поколения)

buttonRDown

controller.buttonRDown.pressing() — Кнопка R ▼

buttonRUp

controller.buttonRUp.pressing() — Кнопка R ▲

Параметры

Описание

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

# 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.

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

Контроллер IQ 2-го поколения с выделенными четырьмя осями джойстика. На левом джойстике ось A вертикальная, а ось B горизонтальная. На правом джойстике ось C горизонтальная, а ось D вертикальная.

Ось

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

axisA

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

axisB

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

axisC

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

axisD

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

Параметры

Описание

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

# 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 запускает функцию при нажатии указанной кнопки. После использования функция будет запускаться автоматически каждый раз при нажатии этой кнопки.

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

Вид спереди и сзади контроллера IQ 2-го поколения, все кнопки выделены желтым цветом. На поверхности контроллера расположены две кнопки джойстика в верхнем левом и правом углах: E вверх и вниз под левым джойстиком и F вверх и вниз под правым. На задней стороне контроллера расположены кнопки L вверх и вниз и R вверх и вниз соответственно слева и справа.

Кнопка

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

buttonEDown

controller.buttonEDown.pressed(callback, arg) — Кнопка E ▼

buttonEUp

controller.buttonEUp.pressed(callback, arg) — Кнопка E ▲

buttonFDown

controller.buttonFDown.pressed(callback, arg) — Кнопка F ▼

buttonFUp

controller.buttonFUp.pressed(callback, arg) — Кнопка F ▲

buttonL3

controller.buttonL3.pressed(callback, arg) — Кнопка левого джойстика, только для контроллера IQ (2-го поколения)

buttonLDown

controller.buttonLDown.pressed(callback, arg) — Кнопка L ▼

buttonLUp

controller.buttonLUp.pressed(callback, arg) — Кнопка L ▲

buttonR3

controller.buttonR3.pressed(callback, arg) — Кнопка правого джойстика, только для контроллера IQ (2-го поколения)

buttonRDown

controller.buttonRDown.pressed(callback, arg) — Кнопка R ▼

buttonRUp

controller.buttonRUp.pressed(callback, arg) — Кнопка R ▲

Параметр

Описание

callback

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

arg

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

# Drive forward when E Up is pressed
def drive_forward():
    drivetrain.drive_for(FORWARD, 100, MM)

controller.buttonEUp.pressed(drive_forward)

.released#

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

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

Вид спереди и сзади контроллера IQ 2-го поколения, все кнопки выделены желтым цветом. На поверхности контроллера расположены две кнопки джойстика в верхнем левом и правом углах: E вверх и вниз под левым джойстиком и F вверх и вниз под правым. На задней стороне контроллера расположены кнопки L вверх и вниз и R вверх и вниз соответственно слева и справа.

Кнопка

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

buttonEDown

controller.buttonEDown.released(callback, arg) — Кнопка E ▼

buttonEUp

controller.buttonEUp.released(callback, arg) — Кнопка E ▲

buttonFDown

controller.buttonFDown.released(callback, arg) — Кнопка F ▼

buttonFUp

controller.buttonFUp.released(callback, arg) — Кнопка F ▲

buttonL3

controller.buttonL3.released(callback, arg) — Кнопка левого джойстика, только для контроллера IQ (2-го поколения)

buttonLDown

controller.buttonLDown.released(callback, arg) — Кнопка L ▼

buttonLUp

controller.buttonLUp.released(callback, arg) — Кнопка L ▲

buttonR3

controller.buttonR3.released(callback, arg) — Кнопка правого джойстика, только для контроллера IQ (2-го поколения)

buttonRDown

controller.buttonRDown.released(callback, arg) — Кнопка R ▼

buttonRUp

controller.buttonRUp.released(callback, arg) — Кнопка R ▲

Параметр

Описание

callback

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

arg

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

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

controller.buttonEUp.released(stop_driving)

.changed#

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

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

Контроллер IQ 2-го поколения с выделенными четырьмя осями джойстика. На левом джойстике ось A вертикальная, а ось B горизонтальная. На правом джойстике ось C горизонтальная, а ось D вертикальная.

Ось

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

axisA

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

axisB

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

axisC

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

axisD

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

Параметр

Описание

callback

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

arg

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

# 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()