控制器#

介绍#

V5 控制器包含按钮、两个摇杆、一个震动马达和一个屏幕。控制器方法可用于检测按钮按下、读取摇杆移动、使控制器震动、启用或禁用已配置的控制器操作、在控制器事件发生时运行函数,或在控制器屏幕上显示文本。

Configured Controller actions are controller behaviors set in the Devices menu. Use remote_control_code_enabled to temporarily enable or disable those configured actions during a project.

This page uses controller_1 as the example Controller name. Replace it with your own configured name as needed.

以下是所有可用方法的列表:

操作 — 使控制器震动或启用/禁用已配置的控制器操作。

屏幕——在控制器屏幕上显示文本和数字。

  • print — Displays text, numbers, or variable values on the Controller screen.

  • set_cursor — Moves the cursor to a specified row and column on the Controller screen.

  • column — Returns the current cursor column on the Controller screen.

  • row — Returns the current cursor row on the Controller screen.

  • clear_screen — Clears the Controller screen.

  • clear_row — Clears one row on the Controller screen.

  • next_row — Moves the cursor to the next row on the Controller screen.

Getter 函数——读取按钮状态和摇杆位置。

  • .pressing — Returns whether a specified button is being pressed.

  • .position — Returns the position of a specified joystick axis.

回调函数——当控制器输入发生变化时运行的函数。

  • .pressed — Runs a function when a specified button is pressed.

  • .released — Runs a function when a specified button is released.

  • .changed — Runs a function when the joystick’s position changes along a specified axis.

构造函数 — 手动创建 Controller 对象。

行动#

rumble#

rumble plays a rumble pattern on the Controller. In the pattern string, periods are short rumbles, hyphens are long rumbles, and spaces are pauses.

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 is a variable that enables or disables Controller actions configured in the Devices menu. Controller configured actions are enabled by default.

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 displays text, numbers, or variable values on the Controller screen using the current cursor position.

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

范围

描述

value

要在控制器屏幕上显示的文本、数字或变量值。可以用逗号分隔多个值来打印它们。

sep

Optional. A string to place between values. This must be written as a keyword argument, such as sep=”- “. The default is ” “.

precision

Optional. The number of decimal places to display when printing simple numbers. This must be written as a keyword argument, such as precision=2. The default is 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 moves the cursor to a specified row and column on the Controller screen. The next printed value will appear at that position.

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

范围

描述

row

The row of the cursor, from 1 to 3.

col

The column of the cursor, from 1 to 19.

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

column#

column returns the current column where text will be printed on the Controller screen.

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 returns the current row where text will be printed on the Controller screen.

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 clears the Controller screen and moves the cursor back to the starting position.

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 clears one row on the Controller screen.

Usage:
controller_1.screen.clear_row(row)

范围

描述

row

Optional. The row to clear, from 1 to 3. If no row is provided, the current cursor row is cleared.

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

next_row#

next_row moves the cursor to column 1 on the next row of the Controller screen. The next printed value will appear on that row.

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 returns whether a specific button on the Controller is currently being pressed. This method must be called on a specific button object, such as controller_1.buttonA.

  • True — The specified button is being pressed.

  • False — The specified button is not being pressed.

用法:
此方法可以使用其中一个可用的按钮对象:

V5 控制器的正面和背面,按钮以黄色高亮显示。控制器正面左侧有上、下、左、右方向键,右侧从 12 点钟方向顺时针方向依次为 X、A、B、Y 键。控制器背面左侧和右侧分别是 L1、L2、R1 和 R2 键。

按钮

命令

buttonA

controller_1.buttonA.pressing() — The A button

buttonB

controller_1.buttonB.pressing() — The B button

buttonX

controller_1.buttonX.pressing() — The X button

buttonY

controller_1.buttonY.pressing() — The Y button

buttonDown

controller_1.buttonDown.pressing() — The Down button

buttonUp

controller_1.buttonUp.pressing() — The Up button

buttonLeft

controller_1.buttonLeft.pressing() — The Left button

buttonRight

controller_1.buttonRight.pressing() — The Right button

buttonL1

controller_1.buttonL1.pressing() — The L1 button

buttonL2

controller_1.buttonL2.pressing() — The L2 button

buttonR1

controller_1.buttonR1.pressing() — The R1 button

buttonR2

controller_1.buttonR2.pressing() — The R2 button

参数

描述

此方法没有参数。

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

    wait(20, MSEC)

.position#

.position returns the position of a joystick axis as a number from -100 to 100.

This method must be called on a specific axis object, such as controller_1.axis1.

用法:
此方法可以使用其中一个可用的轴对象:

一个 VEX V5 控制器,摇杆周围的轴已标注。轴 1 和轴 2 位于右侧摇杆周围,轴 3 和轴 4 位于左侧摇杆周围。

命令

axis1

controller_1.axis1.position() — The right joystick’s horizontal axis

axis2

controller_1.axis2.position() — The right joystick’s vertical axis

axis3

controller_1.axis3.position() — The left joystick’s vertical axis

axis4

controller_1.axis4.position() — The left joystick’s horizontal axis

参数

描述

此方法没有参数。

# 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 runs a function when the specified button is pressed. Once it is used, the function will run automatically each time that button is pressed.

用法:
此方法可以使用其中一个可用的按钮对象:

V5 控制器的正面和背面,按钮以黄色高亮显示。控制器正面左侧有上、下、左、右方向键,右侧从 12 点钟方向顺时针方向依次为 X、A、B、Y 键。控制器背面左侧和右侧分别是 L1、L2、R1 和 R2 键。

按钮

命令

buttonA

controller_1.buttonA.pressed(callback, arg) — The A button

buttonB

controller_1.buttonB.pressed(callback, arg) — The B button

buttonX

controller_1.buttonX.pressed(callback, arg) — The X button

buttonY

controller_1.buttonY.pressed(callback, arg) — The Y button

buttonDown

controller_1.buttonDown.pressed(callback, arg) — The Down button

buttonUp

controller_1.buttonUp.pressed(callback, arg) — The Up button

buttonLeft

controller_1.buttonLeft.pressed(callback, arg) — The Left button

buttonRight

controller_1.buttonRight.pressed(callback, arg) — The Right button

buttonL1

controller_1.buttonL1.pressed(callback, arg) — The L1 button

buttonL2

controller_1.buttonL2.pressed(callback, arg) — The L2 button

buttonR1

controller_1.buttonR1.pressed(callback, arg) — The R1 button

buttonR2

controller_1.buttonR2.pressed(callback, arg) — The R2 button

范围

描述

callback

预先定义的 函数,每次按下指定的按钮时运行。

arg

可选。包含要传递给回调函数的参数的元组。有关更多信息,请参阅使用带参数的事件

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

controller_1.buttonA.pressed(drive_forward)

.released#

.released runs a function when the specified button is released. Once it is used, the function will run automatically each time that button is released.

用法:
此方法可以使用其中一个可用的按钮对象:

V5 控制器的正面和背面,按钮以黄色高亮显示。控制器正面左侧有上、下、左、右方向键,右侧从 12 点钟方向顺时针方向依次为 X、A、B、Y 键。控制器背面左侧和右侧分别是 L1、L2、R1 和 R2 键。

按钮

命令

buttonA

controller_1.buttonA.released(callback, arg) — The A button

buttonB

controller_1.buttonB.released(callback, arg) — The B button

buttonX

controller_1.buttonX.released(callback, arg) — The X button

buttonY

controller_1.buttonY.released(callback, arg) — The Y button

buttonDown

controller_1.buttonDown.released(callback, arg) — The Down button

buttonUp

controller_1.buttonUp.released(callback, arg) — The Up button

buttonLeft

controller_1.buttonLeft.released(callback, arg) — The Left button

buttonRight

controller_1.buttonRight.released(callback, arg) — The Right button

buttonL1

controller_1.buttonL1.released(callback, arg) — The L1 button

buttonL2

controller_1.buttonL2.released(callback, arg) — The L2 button

buttonR1

controller_1.buttonR1.released(callback, arg) — The R1 button

buttonR2

controller_1.buttonR2.released(callback, arg) — The R2 button

范围

描述

callback

预先定义的 函数,每次释放指定的按钮时运行。

arg

可选。包含要传递给回调函数的参数的元组。有关更多信息,请参阅使用带参数的事件

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

controller_1.buttonA.released(back_up)

.changed#

.changed runs a function when the joystick’s position changes along the specified axis. Once it is used, the function will run automatically each time the joystick’s position changes along that axis.

用法:
此方法可以使用其中一个可用的轴对象:

一个 VEX V5 控制器,摇杆周围的轴已标注。轴 1 和轴 2 位于右侧摇杆周围,轴 3 和轴 4 位于左侧摇杆周围。

命令

axis1

controller_1.axis1.changed(callback, arg) — The right joystick’s horizontal axis

axis2

controller_1.axis2.changed(callback, arg) — The right joystick’s vertical axis

axis3

controller_1.axis3.changed(callback, arg) — The left joystick’s vertical axis

axis4

controller_1.axis4.changed(callback, arg) — The left joystick’s horizontal axis

范围

描述

callback

预先定义的 函数,每次操纵杆的位置沿指定轴发生变化时运行。

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 creates a Controller object. Manually creating a Controller object is only needed when configuring a controller outside of VEXcode.

Usage:
Controller(controller_type)

范围

描述

controller_type

Optional. The Controller type to create: PRIMARY for the primary Controller connected to the Brain or PARTNER for the second Controller connected to the Brain.

# Create the primary Controller
controller_1 = Controller(PRIMARY)

# Create a partner Controller
controller_2 = Controller(PARTNER)