Контролер#

Вступ#

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

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

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

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

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

  • rumble — Відтворює візерунок гудіння на контролері.

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

Екран — Відображення тексту та чисел на екрані контролера.

  • print — Відображає текст, числа або значення змінних на екрані контролера.

  • set_cursor — Переміщує курсор до вказаного рядка та стовпця на екрані контролера.

  • column — Повертає поточний стовпець курсора на екрані контролера.

  • row — Повертає поточний рядок курсора на екрані контролера.

  • clear_screen — Очищає екран контролера.

  • clear_row — Очищає один рядок на екрані контролера.

  • next_row — Переміщує курсор до наступного рядка на екрані контролера.

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

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

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

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

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

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

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

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

  • Controller — Створює об’єкт Контролер.

Дії#

rumble#

rumble відтворює візерунок гулу на контролері. У рядку патерну крапки – це короткі гулі, дефіси – довгі, а пробіли – паузи.

Usage:
controller_1.rumble(pattern)

Параметр

Опис

pattern

Рядок, що складається з крапок, дефісів та пробілів, що представляють шаблон гриму.

# Rumble the Controller with a short-short-long-long pattern
controller_1.rumble("..--")

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_1.axis3.position() > 0:
        drivetrain.drive(FORWARD)
    elif controller_1.axis3.position() < 0:
        drivetrain.drive(REVERSE)
    # Press A to use Controller configured actions again
    elif controller_1.buttonA.pressing():
        break
    else:
        drivetrain.stop()

    wait(20, MSEC)

remote_control_code_enabled = True

Екран#

Екран контролера V5 має 3 рядки та 19 стовпців для відображення тексту та чисел.

Знімок екрана контролера V5, що показує рядки та стовпці в області друку. Рядок 1 Стовпець 1 починається у верхньому лівому куті, а рядок 3 та стовпець 19 знаходяться в нижньому правому куті.

print#

controller_1.screen.print відображає текст, числа або значення змінних на екрані контролера, використовуючи поточну позицію курсора.

Usage:
controller_1.screen.print(value, sep, precision)

Параметр

Опис

value

Текст, число або значення змінної, яке відображатиметься на екрані контролера. Можна вивести більше одного значення, розділяючи їх комами.

sep

Необов’язково. Рядок, який потрібно розмістити між значеннями. Його потрібно записати як ключовий аргумент, наприклад, sep=”- “. Значення за замовчуванням — ” “.

precision

Необов’язково. Кількість знаків після коми, які відображатимуться під час друку простих чисел. Це має бути записано як ключовий аргумент, наприклад, precision=2. Значення за замовчуванням — 2.

# Print a number on the Controller screen
controller_1.screen.print(1)

# Print multiple numbers separated by hyphens
controller_1.screen.print(1, 2, 3, 4, sep="-")

# Print a number using one decimal place
controller_1.screen.print(1 / 3, precision=1)

set_cursor#

set_cursor переміщує курсор до вказаного рядка та стовпця на екрані контролера. Наступне надруковане значення з’явиться в цій позиції.

Usage:
controller_1.screen.set_cursor(row, col)

Параметр

Опис

row

Рядок курсора, від 1 до 3.

col

Стовпець курсора, від 1 до 19.

# Print text at row 2, column 1
controller_1.screen.set_cursor(2, 1)
controller_1.screen.print("Ready")

column#

column повертає поточний стовпець, у якому текст буде надруковано на екрані контролера.

Usage:
controller_1.screen.column()

Параметри

Опис

Цей метод не має параметрів.

# Print the current column number
controller_1.screen.set_cursor(2, 3)
controller_1.screen.print(controller_1.screen.column())

row#

row повертає поточний рядок, де текст буде надруковано на екрані контролера.

Usage:
controller_1.screen.row()

Параметри

Опис

Цей метод не має параметрів.

# Print the current row number
controller_1.screen.set_cursor(2, 3)
controller_1.screen.print(controller_1.screen.row())

clear_screen#

clear_screen очищає екран контролера та переміщує курсор назад у початкову позицію.

Usage:
controller_1.screen.clear_screen()

Параметри

Опис

Цей метод не має параметрів.

# Print text, then clear the Controller screen
controller_1.screen.print("VEX V5")
wait(2, SECONDS)
controller_1.screen.clear_screen()

clear_row#

clear_row очищає один рядок на екрані контролера.

Usage:
controller_1.screen.clear_row(row)

Параметр

Опис

row

Необов’язково. Рядок, який потрібно очистити, від 1 до 3Якщо рядок не вказано, очищається поточний рядок курсора.

# Clear row 2 on the Controller screen
controller_1.screen.clear_row(2)

next_row#

next_row переміщує курсор до стовпця 1 у наступному рядку екрана контролера. Наступне надруковане значення з’явиться в цьому рядку.

Usage:
controller_1.screen.next_row()

Параметри

Опис

Цей метод не має параметрів.

# Print on two rows
controller_1.screen.print("VEX V5")
controller_1.screen.next_row()
controller_1.screen.print("Controller")

Геттери#

.pressing#

.pressing повертає, чи натиснуто певну кнопку на контролері. Цей метод потрібно викликати для певного об’єкта кнопки, наприклад, controller_1.buttonA.

  • True — Натискається зазначена кнопка.

  • False — Вказана кнопка не натискається.

Використання:
Один із доступних об’єктів кнопок можна використовувати з цим методом:

Передня та задня сторони контролера V5 з кнопками, виділеними жовтим кольором. На поверхні контролера розташовані кнопки зі стрілками вгору, вниз, вліво та вправо ліворуч, а також кнопки X, A, B, Y за годинниковою стрілкою від 12 годин праворуч. На задній стороні контролера розташовані L1, L2, R1 та R2 ліворуч та праворуч відповідно.

Кнопка

Команда

buttonA

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

buttonB

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

buttonX

controller_1.buttonX.pressing() — Кнопка X

buttonY

controller_1.buttonY.pressing() — Кнопка Y

buttonDown

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

buttonUp

controller_1.buttonUp.pressing() — Кнопка Вгору

buttonLeft

controller_1.buttonLeft.pressing() — Кнопка Ліва

buttonRight

controller_1.buttonRight.pressing() — Кнопка Права

buttonL1

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

buttonL2

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

buttonR1

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

buttonR2

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

Параметри

Опис

Цей метод не має параметрів.

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

    wait(20, MSEC)

.position#

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

Цей метод потрібно викликати для певного об’єкта осі, такого як controller_1.axis1.

Використання:
Один із доступних об’єктів осі можна використовувати з цим методом:

Контролер VEX V5 з позначеними осями навколо джойстиків. Осі 1 та 2 розташовані навколо правого джойстика, а осі 3 та 4 — навколо лівого.

Вісь

Команда

axis1

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

axis2

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

axis3

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

axis4

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

Параметри

Опис

Цей метод не має параметрів.

# Turn with the left joystick
remote_control_code_enabled = False

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

    wait(20, MSEC)

Зворотні виклики#

.pressed#

.pressed запускає функцію при натисканні вказаної кнопки. Після використання функція запускатиметься автоматично щоразу, коли натискатиметься ця кнопка.

Використання:
Один із доступних об’єктів кнопок можна використовувати з цим методом:

Передня та задня сторони контролера V5 з кнопками, виділеними жовтим кольором. На поверхні контролера розташовані кнопки зі стрілками вгору, вниз, вліво та вправо ліворуч, а також кнопки X, A, B, Y за годинниковою стрілкою від 12 годин праворуч. На задній стороні контролера розташовані L1, L2, R1 та R2 ліворуч та праворуч відповідно.

Кнопка

Команда

buttonA

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

buttonB

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

buttonX

controller_1.buttonX.pressed(callback, arg) — Кнопка X

buttonY

controller_1.buttonY.pressed(callback, arg) — Кнопка Y

buttonDown

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

buttonUp

controller_1.buttonUp.pressed(callback, arg) — Кнопка Вгору

buttonLeft

controller_1.buttonLeft.pressed(callback, arg) — Кнопка Ліва

buttonRight

controller_1.buttonRight.pressed(callback, arg) — Кнопка Права

buttonL1

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

buttonL2

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

buttonR1

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

buttonR2

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

Параметр

Опис

callback

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

arg

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

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

controller_1.buttonA.pressed(drive_forward)

.released#

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

Використання:
Один із доступних об’єктів кнопок можна використовувати з цим методом:

Передня та задня сторони контролера V5 з кнопками, виділеними жовтим кольором. На поверхні контролера розташовані кнопки зі стрілками вгору, вниз, вліво та вправо ліворуч, а також кнопки X, A, B, Y за годинниковою стрілкою від 12 годин праворуч. На задній стороні контролера розташовані L1, L2, R1 та R2 ліворуч та праворуч відповідно.

Кнопка

Команда

buttonA

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

buttonB

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

buttonX

controller_1.buttonX.released(callback, arg) — Кнопка X

buttonY

controller_1.buttonY.released(callback, arg) — Кнопка Y

buttonDown

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

buttonUp

controller_1.buttonUp.released(callback, arg) — Кнопка Вгору

buttonLeft

controller_1.buttonLeft.released(callback, arg) — Кнопка Ліва

buttonRight

controller_1.buttonRight.released(callback, arg) — Кнопка Праворуч

buttonL1

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

buttonL2

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

buttonR1

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

buttonR2

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

Параметр

Опис

callback

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

arg

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

# Drive backward when A is released
def back_up():
    drivetrain.drive_for(REVERSE, 100, MM)

controller_1.buttonA.released(back_up)

.changed#

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

Використання:
Один із доступних об’єктів осі можна використовувати з цим методом:

Контролер VEX V5 з позначеними осями навколо джойстиків. Осі 1 та 2 розташовані навколо правого джойстика, а осі 3 та 4 — навколо лівого.

Вісь

Команда

axis1

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

axis2

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

axis3

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

axis4

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

Параметр

Опис

callback

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

arg

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

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

controller_1.axis4.changed(tada_sound)

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

Controller#

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

Usage:
Controller(controller_type)

Параметр

Опис

controller_type

Необов’язково. Тип контролера для створення: PRIMARY для основного контролера, підключеного до мозку, або PARTNER для другого контролера, підключеного до мозку.

# Create the primary Controller
controller_1 = Controller(PRIMARY)

# Create a partner Controller
controller_2 = Controller(PARTNER)