控制器#
介紹#
VEX IQ(第二代)控制器配備按鈕和兩個搖桿。控制器方法可用於偵測按鈕按下、讀取搖桿移動、啟用或停用已設定的控制器操作,或在控制器事件發生時執行相關函數。
第二代 IQ 大腦可以連接到第二代 IQ 控制器或第一代 IQ 控制器。第一代 IQ 控制器必須安裝藍色智慧無線電模組。
已配置的控制器操作是指在「設備」選單中設定的控制器行為。使用 remote_control_code_enabled 可在專案進行期間暫時啟用或停用這些已設定的操作。
本頁面使用 controller 作為範例控制器名稱。請根據需要將其替換為您自己配置的名稱。
以下是所有可用方法的清單:
操作 — 啟用或停用已設定的控制器操作。
remote_control_code_enabled— 啟用或停用在「裝置」選單中配置的控制器操作。
Getter 函數-讀取按鈕狀態和搖桿位置。
回調函數-當控制器輸入發生變化時執行的函數。
建構子 — 手動建立 Controller 物件。
Controller— 建立一個 Controller 物件。
行動#
remote_control_code_enabled#
remote_control_code_enabled 變數用於啟用或停用在「裝置」選單中配置的控制器操作。預設情況下,已設定的控制器操作處於啟用狀態。
Usage:
remote_control_code_enabled = state
價值 |
描述 |
|---|---|
|
啟用控制器配置的操作。 |
|
停用控制器配置的操作。 |
# 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— 指定的按鈕未按下。
用法:
此方法可以使用其中一個可用的按鈕物件:

按鈕 |
命令 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
參數 |
描述 |
|---|---|
此方法沒有參數。 |
# 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。
用法:
此方法可以使用其中一個可用的軸物件:

軸 |
命令 |
|---|---|
|
|
|
|
|
|
|
|
參數 |
描述 |
|---|---|
此方法沒有參數。 |
# 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 表示當指定的按鈕被按下時執行一個函數。一旦使用,每次按下該按鈕時,函數都會自動運行。
用法:
此方法可以使用其中一個可用的按鈕物件:

按鈕 |
命令 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
範圍 |
描述 |
|---|---|
|
預先定義的 函數,每次按下指定的按鈕時執行。 |
|
可選。包含要傳遞給回呼函數的參數的元組。有關更多信息,請參閱使用帶參數的事件。 |
# Drive forward when E Up is pressed
def drive_forward():
drivetrain.drive_for(FORWARD, 100, MM)
controller.buttonEUp.pressed(drive_forward)
.released#
.released 會在指定的按鈕被釋放時運行一個函數。一旦使用,每次釋放該按鈕時,函數都會自動運行。
用法:
此方法可以使用其中一個可用的按鈕物件:

按鈕 |
命令 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
範圍 |
描述 |
|---|---|
|
預先定義的 函數,每次釋放指定的按鈕時都會執行。 |
|
可選。包含要傳遞給回呼函數的參數的元組。有關更多信息,請參閱使用帶參數的事件。 |
# Stop driving when E Up is released
def stop_driving():
drivetrain.stop()
controller.buttonEUp.released(stop_driving)
.changed#
.changed 會在操縱桿沿著指定軸位置改變時執行一個函數。一旦啟用,函數會在每次操縱桿沿著該軸位置變化時自動運行。
用法:
此方法可以使用其中一個可用的軸物件:

軸 |
命令 |
|---|---|
|
|
|
|
|
|
|
|
範圍 |
描述 |
|---|---|
|
預先定義的 函數,每次操縱桿的位置沿著指定軸變化時運行。 |
|
可選。包含要傳遞給回呼函數的參數的元組。有關更多信息,請參閱使用帶參數的事件。 |
# 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()