Контроллер#
Введение#
Контроллер 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— Создает объект Controller.
Действия#
rumble#
rumble воспроизводит вибрационный паттерн на контроллере. В строке паттерна точки обозначают короткие вибрационные сигналы, дефисы — длинные, а пробелы — паузы.
Usage:
controller_1.rumble(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
Ценить |
Описание |
|---|---|
|
Включает действия, настроенные контроллером. |
|
Отключает действия, настроенные контроллером. |
# 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 столбцов для отображения текста и чисел.

print#
controller_1.screen.print отображает текст, числа или значения переменных на экране контроллера, используя текущую позицию курсора.
Usage:
controller_1.screen.print(value, sep, precision)
Параметр |
Описание |
|---|---|
|
Текст, число или значение переменной для отображения на экране контроллера. Можно вывести несколько значений, разделяя их запятыми. |
|
Необязательный параметр. Строка, которая будет помещена между значениями. Ее необходимо указывать в качестве ключевого аргумента, например, |
|
Необязательный параметр. Количество десятичных знаков, отображаемых при выводе простых чисел. Этот параметр необходимо указывать в качестве ключевого аргумента, например, |
# 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)
Параметр |
Описание |
|---|---|
|
Строка курсора, от |
|
Столбец курсора, от |
# 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)
Параметр |
Описание |
|---|---|
|
Необязательно. Строка для очистки, от |
# 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— Указанная кнопка не нажата.
Использование:
С этим методом можно использовать один из доступных объектов кнопок:

Кнопка |
Командование |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
# 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.
Использование:
С этим методом можно использовать один из доступных объектов оси:

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

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

Кнопка |
Командование |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Параметр |
Описание |
|---|---|
|
Предварительно определенная функция, которая будет выполняться каждый раз, когда указанная кнопка отпускается. |
|
Необязательно. Кортеж, содержащий аргументы для передачи в функцию обратного вызова. См. Использование событий с параметрами для получения дополнительной информации. |
# Drive backward when A is released
def back_up():
drivetrain.drive_for(REVERSE, 100, MM)
controller_1.buttonA.released(back_up)
.changed#
Функция .changed запускает функцию при изменении положения джойстика вдоль указанной оси. После использования функция будет запускаться автоматически каждый раз при изменении положения джойстика вдоль этой оси.
Использование:
С этим методом можно использовать один из доступных объектов оси:

Ось |
Командование |
|---|---|
|
|
|
|
|
|
|
|
Параметр |
Описание |
|---|---|
|
Предварительно определенная функция, которая запускается каждый раз, когда положение джойстика изменяется вдоль указанной оси. |
|
Необязательно. Кортеж, содержащий аргументы для передачи в функцию обратного вызова. См. Использование событий с параметрами для получения дополнительной информации. |
# Play a sound when the left joystick moves
def tada_sound():
brain.play_sound(SoundType.TADA)
controller_1.axis4.changed(tada_sound)
Строители#
Controller#
Controller создает объект Controller. Создание объекта Controller вручную необходимо только при настройке контроллера вне VEXcode.
Usage:
Controller(controller_type)
Параметр |
Описание |
|---|---|
|
Необязательно. Тип создаваемого контроллера: |
# Create the primary Controller
controller_1 = Controller(PRIMARY)
# Create a partner Controller
controller_2 = Controller(PARTNER)