Контролер#

Вступ#

Контролер VEX IQ (2-го покоління) має кнопки та два джойстики. Методи контролера можна використовувати для перевірки натискань кнопок, зчитування руху джойстика, увімкнення або вимкнення налаштованих дій контролера або запуску функцій, коли відбуваються події контролера.

IQ Brain (2-го покоління) може підключатися до контролера IQ (2-го покоління) або IQ (1-го покоління). На контролері IQ (1-го покоління) має бути встановлено синій Smart Radio.

Налаштовані дії контролера – це поведінка контролера, встановлена ​​в меню «Пристрої». Використовуйте remote_control_code_enabled , щоб тимчасово ввімкнути або вимкнути ці налаштовані дії під час проекту.

На цій сторінці як приклад назви контролера використовується controller За потреби замініть її власною налаштованою назвою.

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

Дія — Увімкнути або вимкнути налаштовані дії контролера.

  • remote_control_code_enabled — Вмикає або вимикає дії контролера, налаштовані в меню «Пристрої».

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

  • .pressing — Повертає, чи натискається вказана кнопка.

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

Зворотні виклики — Запускають функції, коли змінюється вхідний сигнал контролера.

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

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

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

Конструктор — вручну створіть об’єкт контролера.

  • 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

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

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

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

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

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

arg

Необов’язково. Кортеж, що містить аргументи для передачі функції зворотного виклику. Див. Використання подій з параметрами для отримання додаткової інформації.

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

controller.axisD.changed(beep)

Конструктори#

Controller#

Controller створює об’єкт Контролер. Ручне створення об’єкта Контролер потрібне лише під час налаштування контролера поза VEXcode.

Usage:
Controller()

Параметри

Опис

Цей конструктор не має параметрів.

# Create a Controller object
my_controller = Controller()