控制器#

介绍#

VEX EXP 控制器配有按钮和两个操纵杆。控制器方法可用于检测按钮按下、读取操纵杆移动、启用或禁用已配置的控制器操作,或在控制器事件发生时运行函数。

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 as the example controller name. Replace it with your own configured name as needed.

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

操作 — 启用或禁用已配置的控制器操作。

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 对象。

行动#

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.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 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.buttonA.

  • True — The specified button is being pressed.

  • False — The specified button is not being pressed.

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

EXP 控制器的正面和顶部,摇杆、方向键和动作键以黄色高亮显示。控制器表面左右两侧各有一个摇杆,左侧是上下方向键,右侧是 A 键和 B 键。控制器顶部左侧是 L1 键和 L2 键,右侧是 R1 键和 R2 键。

按钮

命令

buttonA

controller.buttonA.pressing() — The A button

buttonB

controller.buttonB.pressing() — The B button

buttonDown

controller.buttonDown.pressing() — The Down button

buttonUp

controller.buttonUp.pressing() — The Up button

buttonL1

controller.buttonL1.pressing() — The L1 button

buttonL2

controller.buttonL2.pressing() — The L2 button

buttonL3

controller.buttonL3.pressing() — The L3 button

buttonR1

controller.buttonR1.pressing() — The R1 button

buttonR2

controller.buttonR2.pressing() — The R2 button

buttonR3

controller.buttonR3.pressing() — The R3 button

参数

描述

此方法没有参数。

# Turn right while L1 is pressed
while True:
    if controller.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.axis1.

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

EXP 控制器的正面,摇杆轴编号以红色突出显示。控制器表面显示,左侧摇杆标记为轴 4(左右移动)和轴 3(上下移动),而右侧摇杆标记为轴 1(左右移动)和轴 2(上下移动)。

命令

axis1

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

axis2

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

axis3

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

axis4

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

参数

描述

此方法没有参数。

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

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

EXP 控制器的正面和顶部,摇杆、方向键和动作键以黄色高亮显示。控制器表面左右两侧各有一个摇杆,左侧是上下方向键,右侧是 A 键和 B 键。控制器顶部左侧是 L1 键和 L2 键,右侧是 R1 键和 R2 键。

按钮

命令

buttonA

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

buttonB

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

buttonDown

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

buttonUp

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

buttonL1

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

buttonL2

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

buttonL3

controller.buttonL3.pressed(callback, arg) — The L3 button

buttonR1

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

buttonR2

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

buttonR3

controller.buttonR3.pressed(callback, arg) — The R3 button

范围

描述

callback

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

arg

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

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

controller.buttonR1.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.

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

EXP 控制器的正面和顶部,摇杆、方向键和动作键以黄色高亮显示。控制器表面左右两侧各有一个摇杆,左侧是上下方向键,右侧是 A 键和 B 键。控制器顶部左侧是 L1 键和 L2 键,右侧是 R1 键和 R2 键。

按钮

命令

buttonA

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

buttonB

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

buttonDown

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

buttonUp

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

buttonL1

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

buttonL2

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

buttonL3

controller.buttonL3.released(callback, arg) — The L3 button

buttonR1

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

buttonR2

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

buttonR3

controller.buttonR3.released(callback, arg) — The R3 button

范围

描述

callback

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

arg

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

# Stop driving when R1 is released
def stop_driving():
    drivetrain.stop()

controller.buttonR1.released(stop_driving)

.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.

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

EXP 控制器的正面,摇杆轴编号以红色突出显示。控制器表面显示,左侧摇杆标记为轴 4(左右移动)和轴 3(上下移动),而右侧摇杆标记为轴 1(左右移动)和轴 2(上下移动)。

命令

axis1

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

axis2

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

axis3

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

axis4

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

范围

描述

callback

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

arg

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

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

controller.axis3.changed(beep)

构造函数#

Controller#

Controller creates a Controller object. Manually creating a Controller object is only needed when configuring a controller outside of VEXcode.

Usage:
Controller()

参数

描述

此构造函数没有参数。

# Create a Controller object
my_controller = Controller()