Контролер#

Вступ#

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

Налаштовані дії контролера – це поведінка контролера, встановлена ​​в меню «Пристрої». Використовуйте 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

Вимикає дії, налаштовані контролером.

# 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

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

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

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

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

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

arg

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

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

controller.axis3.changed(beep)

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

Controller#

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

Usage:
Controller()

Параметри

Опис

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

# Create a Controller object
my_controller = Controller()