控制器#

介绍#

V5 主机可以连接到 V5 控制器。V5 控制器有两个模拟摇杆和多个按钮,主机可以通过这些按钮来检测动作和按键操作。

For the examples below, the configured controller will be named controller_1 and will be used in all subsequent examples throughout this API documentation when referring to Controller class methods.

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

操作 – 开启或关闭控制器编程的操作。

  • rumble – Sends a rumble string to the V5 Controller.

  • print – Prints text on the Controller’s screen.

  • set_cursor – Sets the cursor position used for printing text on the Controller’s screen.

  • column – Returns the current column where text will be printed as an integer.

  • row – Returns the current row where text will be printed as an integer.

  • clear_screen – Clears the whole screen.

  • clear_row – Clears a screen row.

  • next_row – Moves the cursor to the beginning of the next row.

  • remote_control_code_enabled – Enable or disable Controller configured actions.

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

  • .pressing – Returns whether the specified button is being pressed.

  • .position – Returns the position of the joystick’s specified axis.

回调函数——当按钮或摇杆状态改变时运行的代码。

  • .pressed – Calls a function when the specified button is pressed.

  • .released – Calls a function when the specified button is released.

  • .changed – Calls a function when the joystick’s axis changes.

构造函数——手动初始化和配置控制器。

行动#

rumble#

rumble sends a rumble string to the V5 Controller.

用法:

controller.rumble(pattern)

范围

描述

pattern

A pattern using . and - for short and long rumbles.

# Rumble the V5 Controller to the pattern short-short-long-long.
controller.rumble('..--')

print#

controller.screen.print prints text on the Controller’s screen using the current cursor position.

用法:

controller.screen.print(text, sep, precision)

范围

描述

text

控制器屏幕上要打印的文本。

sep

Optional. A string to inset between values. This must be written as a keyword argument (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 (precision=). The default is 2.

# Print the number 1 on the screen.
controller.screen.print(1)

# Print the numbers 1, 2, 3 and 4 on the screen.
controller.screen.print(1, 2, 3, 4, sep='-')

# Print motor1's velocity on the screen using a format string.
controller.screen.print("motor1 : % 7.2f" %(motor1.velocity()))

set_cursor#

set_cursor sets the cursor to a specific row and column on the controller’s screen. The controller screen has 3 rows and 19 columns.

A screenshot of the V5 Controller screen, showing the rows and columns in the printable area. Row 1 Column 1 starts at the upper left corner and row 3, column 19 are in the lower right corner.

用法:

controller.screen.set_cursor(row, col)

范围

描述

row

光标所在行的第 1 行到第 3 行。

col

光标所在列,从 1 到 19。

column#

column returns the current column where text will be printed as an integer.

用法:

controller.screen.column()

参数

描述

此方法没有参数。

# Print the column number on row 2, column 3.
controller.screen.set_cursor(2, 3)
controller.screen.print(controller.screen.column())

row#

row returns the current row where text will be printed as an integer.

用法:

controller.screen.row()

参数

描述

此方法没有参数。

# Print the column number on row 2, column 3.
controller.screen.set_cursor(2, 3)
controller.screen.print(controller.screen.row())

clear_screen#

clear_screen clears the whole screen.

用法:

controller.screen.clear_screen()

参数

描述

此方法没有参数。

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

clear_row#

clear_row clears a screen row.

用法:

controller.screen.clear_row(row)

参数

描述

row

可选。要清除的行,范围从 1 到 3。默认值为当前光标所在行。

# Clear row 2.
controller.screen.clear_row(2)

next_row#

next_row moves the cursor to the beginning of the next row.

用法:

controller.screen.next_row()

参数

描述

此方法没有参数。

# Print text and then clear row 2.
controller.screen.print("VEX V5")
controller.screen.next_row()
controller.screen.print("Controller")

remote_control_code_enabled#

remote_control_code_enabled is a variable that can be set to a boolean that enables or disables Controller configured actions from the Devices menu. The Controller is enabled by default. It can be set to either of the following:

  • True — Enable Controller configured actions.

  • False — Disable Controller configured actions.

Usage: remote_control_code_enabled = 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 the controller configured actions
    elif controller_1.buttonA.pressing():
        break
    else:
        drivetrain.stop()
    wait(20, MSEC)

remote_control_code_enabled = True

获取器#

.pressing#

.pressing returns an integer indicating whether a specific button on the controller is currently being pressed. This method must be called on a specific button object, such as buttonEDown (see full list of button objects below).

  • 1 - The specified button is being pressed.

  • 0 - The specified button is not being pressed.

用法:
此方法可以使用十二种可用按钮对象之一,如下所示:

The front and back side of the V5 Controller with the buttons highlighted in yellow. On the surface of the controller are up, down, left, and right arrow buttons on the left, and X, A, B, Y buttons clockwise from 12 oclock on the right. On the back side of the controller are L1, L2, R1, and R2 on the left and right sides respectively.

按钮

命令

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()

.position#

.position returns the position of the joystick’s specified axis as an integer from –100 to 100, representing a percentage. This method must be called on a specific axis object, such as axis1 (see full list of axis objects below).

用法:

该方法可以使用以下四个可用坐标轴之一:

A VEX V5 Controller with the axes around the joysticks labeled. Axis 1 and 2 are around the right joystick, and Axis 3 and 4 are around the left.

命令

axis1

controller_1.axis1.position() — The Right Joystick’s vertical axis

axis2

controller_1.axis2.position() — The Right Joystick’s horizontal axis

axis3

controller_1.axis3.position() — The Left Joystick’s horizontal axis

axis4

controller_1.axis4.position() — The Left Joystick’s vertical 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 registers a function to be called when a specific button on the controller is pressed. This method must be called on a specific button object, such as buttonEDown – (see full list of button objects below).

用法:
此方法可以使用一个可用的按钮对象,如下所示:

The front and back side of the V5 Controller with the buttons highlighted in yellow. On the surface of the controller are up, down, left, and right arrow buttons on the left, and X, A, B, Y buttons clockwise from 12 oclock on the right. On the back side of the controller are L1, L2, R1, and R2 on the left and right sides respectively.

按钮

命令

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

参数

描述

打回来

A function that is previously defined to execute when the specified button is being pressed.

参数

可选。包含要传递给回调函数的参数的元组。带参数的函数 提供更多信息。

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

controller_1.buttonA.pressed(drive_forward)

.released#

.released registers a function to be called when a specific button on the controller is released. This method must be called on a specific button object, such as buttonL1 – (see full list of button objects below).

用法:
此方法可以使用一个可用的按钮对象,如下所示:

The front and back side of the V5 Controller with the buttons highlighted in yellow. On the surface of the controller are up, down, left, and right arrow buttons on the left, and X, A, B, Y buttons clockwise from 12 oclock on the right. On the back side of the controller are L1, L2, R1, and R2 on the left and right sides respectively.

按钮

命令

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

参数

描述

打回来

A function that is previously defined to execute when the specified button is released.

参数

可选。包含要传递给回调函数的参数的元组。带参数的函数 提供更多信息。

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

controller_1.buttonA.released(back_up)

.changed#

.changed registers a function to be called when the joystick’s position changes. This method must be called on a specific axis object, such as axis1 (see full list of axis objects below).

用法:
此方法可以使用以下所示的四个可用轴之一:

A VEX V5 Controller with the axes around the joysticks labeled. Axis 1 and 2 are around the right joystick, and Axis 3 and 4 are around the left.

命令

axis1

controller_1.axis1.changed(callback, arg) — The Right Joystick’s vertical axis

axis2

controller_1.axis2.changed(callback, arg) — The Right Joystick’s horizontal axis

axis3

controller_1.axis3.changed(callback, arg) — The Left Joystick’s horizontal axis

axis4

controller_1.axis4.changed(callback, arg) — The Left Joystick’s vertical axis

参数

描述

打回来

先前定义的当轴的值发生变化时执行的函数

参数

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

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

controller_1.axis4.changed(tada_sound)

构造函数#

Constructors are used to manually create Controller objects, which are necessary for configuring a controller outside of VEXcode. You can only create two controllers in a project.

Controller#

Controller creates a controller.

Usage:
Controller(controller_type)

参数

描述

controller_type

Optional.The type of controller to create.

  • PRIMARY (Default) - The primary controller.
  • PARTNER - The partner controller.

# Create a Controller
controller_1 = Controller(PRIMARY)

# Create two Controllers
controller_1 = Controller(PRIMARY)
controller_2 = Controller(PARTNER)