控制器#

介紹#

VEX IQ(第二代)控制器配備按鈕和兩個搖桿。控制器方法可用於偵測按鈕按下、讀取搖桿移動、啟用或停用已設定的控制器操作,或在控制器事件發生時執行相關函數。

第二代 IQ 大腦可以連接到第二代 IQ 控制器或第一代 IQ 控制器。第一代 IQ 控制器必須安裝藍色智慧無線電模組。

已配置的控制器操作是指在「設備」選單中設定的控制器行為。使用 remote_control_code_enabled 可在專案進行期間暫時啟用或停用這些已設定的操作。

本頁面使用 controller 作為範例控制器名稱。請根據需要將其替換為您自己配置的名稱。

以下是所有可用方法的清單:

操作 — 啟用或停用已設定的控制器操作。

Getter 函數-讀取按鈕狀態和搖桿位置。

  • .pressing — 傳回指定按鈕是否被按下。

  • .position — 傳回指定操縱桿軸的位置。

回調函數-當控制器輸入發生變化時執行的函數。

  • .pressed — 當按下指定的按鈕時執行一個函數。

  • .released — 當指定的按鈕被釋放時運行一個函數。

  • .changed — 當操縱桿的位置沿指定軸發生變化時運行函數。

建構子 — 手動建立 Controller 物件。

  • Controller — 建立一個 Controller 物件。

行動#

remote_control_code_enabled#

remote_control_code_enabled 變數用於啟用或停用在「裝置」選單中配置的控制器操作。預設情況下,已設定的控制器操作處於啟用狀態。

Usage:
remote_control_code_enabled = state

價值

描述

True

啟用控制器配置的操作。

False

停用控制器配置的操作。

# Use custom controller code, then re-enable configured actions
remote_control_code_enabled = False

while True:
    if controller.axisA.position() > 0:
        drivetrain.drive(FORWARD)
    elif controller.axisA.position() < 0:
        drivetrain.drive(REVERSE)
    elif controller.buttonEUp.pressing():
        break
    else:
        drivetrain.stop()

    wait(20, MSEC)

remote_control_code_enabled = True

獲取器#

.pressing#

.pressing 返回控制器上的特定按鈕目前是否被按下。此方法必須在特定的按鈕物件上調用,例如 controller.buttonEUp。

  • True — 指定的按鈕正在被按下。

  • False — 指定的按鈕未按下。

用法:
此方法可以使用其中一個可用的按鈕物件:

IQ 第二代控制器的正面和背面視圖,所有按鈕均以黃色高亮顯示。控制器表面左上角和右上角各有兩個搖桿按鈕,左側搖桿下方是 E 上下鍵,右側搖桿下方是 F 上下鍵。控制器背面左側和右側分別是 L 上下鍵和 R 上下鍵。

按鈕

命令

buttonEDown

controller.buttonEDown.pressing() — E ▼ 按鈕

buttonEUp

controller.buttonEUp.pressing() — E ▲ 按鈕

buttonFDown

controller.buttonFDown.pressing() — F ▼ 按鈕

buttonFUp

controller.buttonFUp.pressing() — F ▲ 按鈕

buttonL3

controller.buttonL3.pressing() — 僅限 IQ(第二代)控制器的左搖桿按鈕

buttonLDown

controller.buttonLDown.pressing() — L ▼ 按鈕

buttonLUp

controller.buttonLUp.pressing() — L ▲ 按鈕

buttonR3

controller.buttonR3.pressing() — 僅限 IQ(第二代)控制器的右搖桿按鈕

buttonRDown

controller.buttonRDown.pressing() — R ▼ 按鈕

buttonRUp

controller.buttonRUp.pressing() — R ▲ 按鈕

參數

描述

此方法沒有參數。

# Turn right while E Up is held
while True:
    if controller.buttonEUp.pressing():
        drivetrain.turn(RIGHT)
    else:
        drivetrain.stop()

    wait(20, MSEC)

.position#

.position 返回操縱桿軸的位置,數值範圍為 -100 到 100。

必須在特定的軸物件上呼叫此方法,例如 controller.axisA。

用法:
此方法可以使用其中一個可用的軸物件:

IQ 第二代控制器,四個搖桿軸已高亮顯示。左側搖桿,A 軸為垂直方向,B 軸為水平方向。右側搖桿,C 軸為水平方向,D 軸為垂直方向。

軸

命令

axisA

controller.axisA.position() — 左搖桿的垂直軸

axisB

controller.axisB.position() — 左搖桿的水平軸

axisC

controller.axisC.position() — 右搖桿的水平軸

axisD

controller.axisD.position() — 右搖桿的垂直軸

參數

描述

此方法沒有參數。

# Turn with the left joystick
remote_control_code_enabled = False

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

    wait(20, MSEC)

回呼函數#

.pressed#

.pressed 表示當指定的按鈕被按下時執行一個函數。一旦使用,每次按下該按鈕時,函數都會自動運行。

用法:
此方法可以使用其中一個可用的按鈕物件:

IQ 第二代控制器的正面和背面視圖,所有按鈕均以黃色高亮顯示。控制器表面左上角和右上角各有兩個搖桿按鈕,左側搖桿下方是 E 上下鍵,右側搖桿下方是 F 上下鍵。控制器背面左側和右側分別是 L 上下鍵和 R 上下鍵。

按鈕

命令

buttonEDown

controller.buttonEDown.pressed(callback, arg) — E ▼ 按鈕

buttonEUp

controller.buttonEUp.pressed(callback, arg) — E ▲ 按鈕

buttonFDown

controller.buttonFDown.pressed(callback, arg) — F ▼ 按鈕

buttonFUp

controller.buttonFUp.pressed(callback, arg) — F ▲ 按鈕

buttonL3

controller.buttonL3.pressed(callback, arg) — 僅限 IQ(第二代)控制器的左搖桿按鈕

buttonLDown

controller.buttonLDown.pressed(callback, arg) — L ▼ 按鈕

buttonLUp

controller.buttonLUp.pressed(callback, arg) — L ▲ 按鈕

buttonR3

controller.buttonR3.pressed(callback, arg) — 僅限 IQ(第二代)控制器的右搖桿按鈕

buttonRDown

controller.buttonRDown.pressed(callback, arg) — R ▼ 按鈕

buttonRUp

controller.buttonRUp.pressed(callback, arg) — R ▲ 按鈕

範圍

描述

callback

預先定義的 函數,每次按下指定的按鈕時執行。

arg

可選。包含要傳遞給回呼函數的參數的元組。有關更多信息,請參閱使用帶參數的事件。

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

controller.buttonEUp.pressed(drive_forward)

.released#

.released 會在指定的按鈕被釋放時運行一個函數。一旦使用,每次釋放該按鈕時,函數都會自動運行。

用法:
此方法可以使用其中一個可用的按鈕物件:

IQ 第二代控制器的正面和背面視圖,所有按鈕均以黃色高亮顯示。控制器表面左上角和右上角各有兩個搖桿按鈕,左側搖桿下方是 E 上下鍵,右側搖桿下方是 F 上下鍵。控制器背面左側和右側分別是 L 上下鍵和 R 上下鍵。

按鈕

命令

buttonEDown

controller.buttonEDown.released(callback, arg) — E ▼ 按鈕

buttonEUp

controller.buttonEUp.released(callback, arg) — E ▲ 按鈕

buttonFDown

controller.buttonFDown.released(callback, arg) — F ▼ 按鈕

buttonFUp

controller.buttonFUp.released(callback, arg) — F ▲ 按鈕

buttonL3

controller.buttonL3.released(callback, arg) — 僅限 IQ(第二代)控制器的左搖桿按鈕

buttonLDown

controller.buttonLDown.released(callback, arg) — L ▼ 按鈕

buttonLUp

controller.buttonLUp.released(callback, arg) — L ▲ 按鈕

buttonR3

controller.buttonR3.released(callback, arg) — 僅限 IQ(第二代)控制器的右搖桿按鈕

buttonRDown

controller.buttonRDown.released(callback, arg) — R ▼ 按鈕

buttonRUp

controller.buttonRUp.released(callback, arg) — R ▲ 按鈕

範圍

描述

callback

預先定義的 函數,每次釋放指定的按鈕時都會執行。

arg

可選。包含要傳遞給回呼函數的參數的元組。有關更多信息,請參閱使用帶參數的事件。

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

controller.buttonEUp.released(stop_driving)

.changed#

.changed 會在操縱桿沿著指定軸位置改變時執行一個函數。一旦啟用,函數會在每次操縱桿沿著該軸位置變化時自動運行。

用法:
此方法可以使用其中一個可用的軸物件:

IQ 第二代控制器,四個搖桿軸已高亮顯示。左側搖桿,A 軸為垂直方向,B 軸為水平方向。右側搖桿,C 軸為水平方向,D 軸為垂直方向。

軸

命令

axisA

controller.axisA.changed(callback, arg) — 左搖桿的垂直軸

axisB

controller.axisB.changed(callback, arg) — 左搖桿的水平軸

axisC

controller.axisC.changed(callback, arg) — 右搖桿的水平軸

axisD

controller.axisD.changed(callback, arg) — 右搖桿的垂直軸

範圍

描述

callback

預先定義的 函數,每次操縱桿的位置沿著指定軸變化時運行。

arg

可選。包含要傳遞給回呼函數的參數的元組。有關更多信息,請參閱使用帶參數的事件。

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

controller.axisD.changed(beep)

建構函數#

Controller#

Controller 建立一個控制器物件。只有在 VEXcode 之外配置控制器時才需要手動建立控制器物件。

Usage:
Controller()

參數

描述

此建構函數沒有參數。

# Create a Controller object
my_controller = Controller()