コントローラ#
導入#
VEX EXPコントローラーにはボタンと2つのジョイスティックがあります。コントローラーのメソッドを使用すると、ボタンの押下をチェックしたり、ジョイスティックの動きを読み取ったり、設定済みのコントローラーアクションを有効または無効にしたり、コントローラーイベントが発生したときに関数を実行したりできます。
設定済みのコントローラーアクションは、[デバイス] メニューで設定されたコントローラーの動作です。プロジェクト中にこれらの設定済みアクションを一時的に有効または無効にするには、remote_control_code_enabled を remote_control_code_enabled に設定します。
このページでは、例として controller というコントローラー名を使用しています。必要に応じて、ご自身の設定済みコントローラー名に置き換えてください。
以下に、利用可能なメソッドの一覧を示します。
アクション — 設定済みのコントローラーアクションをオンまたはオフにします。
remote_control_code_enabled— デバイス メニューで設定されたコントローラー アクションを有効または無効にします。
ゲッター — ボタンの状態とジョイスティックの位置を読み取ります。
コールバック — コントローラーの入力が変更されたときに実行される関数。
.pressed— 指定されたボタンが押されたときに関数を実行します。.released— 指定されたボタンが離されたときに関数を実行します。.changed— ジョイスティックの位置が指定された軸に沿って変化したときに関数を実行します。
コンストラクタ — コントローラオブジェクトを手動で作成します。
Controller— コントローラー オブジェクトを作成します。
アクション#
remote_control_code_enabled#
remote_control_code_enabled は、[デバイス] メニューで設定されたコントローラーアクションを有効または無効にする変数です。コントローラーで設定されたアクションは、デフォルトで有効になっています。
Usage:
remote_control_code_enabled = state
価値 |
説明 |
|---|---|
|
コントローラーで設定されたアクションを有効にします。 |
|
コントローラーで設定されたアクションを無効にします。 |
# 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 、コントローラー上の特定のボタンが現在押されているかどうかを返します。このメソッドは、 controller.buttonAのような特定のボタンオブジェクトに対して呼び出す必要があります。
True— 指定されたボタンが押されています。False— 指定されたボタンが押されていません。
使用方法:
利用可能なボタンオブジェクトのいずれかをこのメソッドで使用できます。
ボタン |
指示 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
パラメータ |
説明 |
|---|---|
このメソッドにはパラメータがありません。 |
# Turn right while L1 is pressed
while True:
if controller.buttonL1.pressing():
drivetrain.turn(RIGHT)
else:
drivetrain.stop()
wait(20, MSEC)
.position#
.position 、ジョイスティック軸の位置を -100 から 100までの数値として返します。
このメソッドは、 controller.axis1のような特定の軸オブジェクトに対して呼び出す必要があります。
使用方法:
利用可能な軸オブジェクトのいずれかをこのメソッドで使用できます。
軸 |
指示 |
|---|---|
|
|
|
|
|
|
|
|
パラメータ |
説明 |
|---|---|
このメソッドにはパラメータがありません。 |
# 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 、指定されたボタンが押されたときに関数を実行します。一度使用すると、そのボタンが押されるたびに関数が自動的に実行されます。
使用方法:
利用可能なボタンオブジェクトのいずれかをこのメソッドで使用できます。
ボタン |
指示 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
パラメータ |
説明 |
|---|---|
|
指定されたボタンが押されるたびに実行される、事前に定義された 関数。 |
|
オプション。コールバック関数に渡す引数を含むタプル。詳細については、パラメーター付きイベントの使用を参照してください。 |
# Drive forward when R1 is pressed
def drive_forward():
drivetrain.drive_for(FORWARD, 200, MM)
controller.buttonR1.pressed(drive_forward)
.released#
.released 、指定されたボタンが離されたときに関数を実行します。一度使用すると、そのボタンが離されるたびに自動的に実行されます。
使用方法:
利用可能なボタンオブジェクトのいずれかをこのメソッドで使用できます。
ボタン |
指示 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
パラメータ |
説明 |
|---|---|
|
指定されたボタンが離されるたびに実行される、事前に定義された 関数。 |
|
オプション。コールバック関数に渡す引数を含むタプル。詳細については、パラメーター付きイベントの使用を参照してください。 |
# Stop driving when R1 is released
def stop_driving():
drivetrain.stop()
controller.buttonR1.released(stop_driving)
.changed#
.changed 、指定された軸に沿ってジョイスティックの位置が変化したときに関数を実行します。一度使用すると、その軸に沿ってジョイスティックの位置が変化するたびに、この関数が自動的に実行されます。
使用方法:
利用可能な軸オブジェクトのいずれかをこのメソッドで使用できます。
軸 |
指示 |
|---|---|
|
|
|
|
|
|
|
|
パラメータ |
説明 |
|---|---|
|
指定された軸に沿ってジョイスティックの位置が変化するたびに実行される、事前に定義された 関数。 |
|
オプション。コールバック関数に渡す引数を含むタプル。詳細については、パラメーター付きイベントの使用を参照してください。 |
# Play a sound when the left joystick moves
def beep():
brain.play_sound(SoundType.TADA)
controller.axis3.changed(beep)
建設業者#
Controller#
Controller は、コントローラーオブジェクトを作成します。コントローラーオブジェクトを手動で作成する必要があるのは、VEXcode以外でコントローラーを設定する場合のみです。
Usage:
Controller()
パラメータ |
説明 |
|---|---|
このコンストラクタにはパラメータがありません。 |
# Create a Controller object
my_controller = Controller()