コントローラ#

導入#

VEX EXPコントローラーにはボタンと2つのジョイスティックがあります。コントローラーのメソッドを使用すると、ボタンの押下をチェックしたり、ジョイスティックの動きを読み取ったり、設定済みのコントローラーアクションを有効または無効にしたり、コントローラーイベントが発生したときに関数を実行したりできます。

設定済みのコントローラーアクションは、[デバイス] メニューで設定されたコントローラーの動作です。プロジェクト中にこれらの設定済みアクションを一時的に有効または無効にするには、remote_control_code_enabled を remote_control_code_enabled に設定します。

このページでは、例として controller というコントローラー名を使用しています。必要に応じて、ご自身の設定済みコントローラー名に置き換えてください。

以下に、利用可能なメソッドの一覧を示します。

アクション — 設定済みのコントローラーアクションをオンまたはオフにします。

  • remote_control_code_enabled — デバイス メニューで設定されたコントローラー アクションを有効または無効にします。

ゲッター — ボタンの状態とジョイスティックの位置を読み取ります。

  • .pressing — 指定されたボタンが押されているかどうかを返します。

  • .position — 指定されたジョイスティック軸の位置を返します。

コールバック — コントローラーの入力が変更されたときに実行される関数。

  • .pressed — 指定されたボタンが押されたときに関数を実行します。

  • .released — 指定されたボタンが離されたときに関数を実行します。

  • .changed — ジョイスティックの位置が指定された軸に沿って変化したときに関数を実行します。

コンストラクタ — コントローラオブジェクトを手動で作成します。

  • Controller — コントローラー オブジェクトを作成します。

アクション#

remote_control_code_enabled#

remote_control_code_enabled は、[デバイス] メニューで設定されたコントローラーアクションを有効または無効にする変数です。コントローラーで設定されたアクションは、デフォルトで有効になっています。

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 、コントローラー上の特定のボタンが現在押されているかどうかを返します。このメソッドは、 controller.buttonAのような特定のボタンオブジェクトに対して呼び出す必要があります。

  • True — 指定されたボタンが押されています。

  • False — 指定されたボタンが押されていません。

使用方法:
利用可能なボタンオブジェクトのいずれかをこのメソッドで使用できます。

EXPコントローラーの前面と上面。ジョイスティック、矢印ボタン、アクションボタンが黄色で強調表示されています。コントローラーの表面には左右に2つのジョイスティックがあり、左側には上下の矢印ボタン、右側にはAボタンとBボタンがあります。コントローラーの上部には、左側にL1とL2、右側にR1とR2があります。

ボタン

指示

buttonA

controller.buttonA.pressing() — Aボタン

buttonB

controller.buttonB.pressing() — Bボタン

buttonDown

controller.buttonDown.pressing() — 下ボタン

buttonUp

controller.buttonUp.pressing() — 上ボタン

buttonL1

controller.buttonL1.pressing() — L1ボタン

buttonL2

controller.buttonL2.pressing() — L2ボタン

buttonL3

controller.buttonL3.pressing() — L3ボタン

buttonR1

controller.buttonR1.pressing() — R1ボタン

buttonR2

controller.buttonR2.pressing() — R2ボタン

buttonR3

controller.buttonR3.pressing() — R3ボタン

パラメータ

説明

このメソッドにはパラメータがありません。

# 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のような特定の軸オブジェクトに対して呼び出す必要があります。

使用方法:
利用可能な軸オブジェクトのいずれかをこのメソッドで使用できます。

EXPコントローラーの前面。ジョイスティックの軸番号が赤色で強調表示されています。コントローラーの表面では、左ジョイスティックは左右の動きを軸4、上下の動きを軸3と表示し、右ジョイスティックは左右の動きを軸1、上下の動きを軸2と表示しています。

軸

指示

axis1

controller.axis1.position() — 右ジョイスティックの水平軸

axis2

controller.axis2.position() — 右ジョイスティックの垂直軸

axis3

controller.axis3.position() — 左ジョイスティックの垂直軸

axis4

controller.axis4.position() — 左ジョイスティックの水平軸

パラメータ

説明

このメソッドにはパラメータがありません。

# 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 、指定されたボタンが押されたときに関数を実行します。一度使用すると、そのボタンが押されるたびに関数が自動的に実行されます。

使用方法:
利用可能なボタンオブジェクトのいずれかをこのメソッドで使用できます。

EXPコントローラーの前面と上面。ジョイスティック、矢印ボタン、アクションボタンが黄色で強調表示されています。コントローラーの表面には左右に2つのジョイスティックがあり、左側には上下の矢印ボタン、右側にはAボタンとBボタンがあります。コントローラーの上部には、左側にL1とL2、右側にR1とR2があります。

ボタン

指示

buttonA

controller.buttonA.pressed(callback, arg) — Aボタン

buttonB

controller.buttonB.pressed(callback, arg) — Bボタン

buttonDown

controller.buttonDown.pressed(callback, arg) — Downボタン

buttonUp

controller.buttonUp.pressed(callback, arg) — 上ボタン

buttonL1

controller.buttonL1.pressed(callback, arg) — L1ボタン

buttonL2

controller.buttonL2.pressed(callback, arg) — L2ボタン

buttonL3

controller.buttonL3.pressed(callback, arg) — L3ボタン

buttonR1

controller.buttonR1.pressed(callback, arg) — R1ボタン

buttonR2

controller.buttonR2.pressed(callback, arg) — R2ボタン

buttonR3

controller.buttonR3.pressed(callback, arg) — R3ボタン

パラメータ

説明

callback

指定されたボタンが押されるたびに実行される、事前に定義された 関数。

arg

オプション。コールバック関数に渡す引数を含むタプル。詳細については、パラメーター付きイベントの使用を参照してください。

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

controller.buttonR1.pressed(drive_forward)

.released#

.released 、指定されたボタンが離されたときに関数を実行します。一度使用すると、そのボタンが離されるたびに自動的に実行されます。

使用方法:
利用可能なボタンオブジェクトのいずれかをこのメソッドで使用できます。

EXPコントローラーの前面と上面。ジョイスティック、矢印ボタン、アクションボタンが黄色で強調表示されています。コントローラーの表面には左右に2つのジョイスティックがあり、左側には上下の矢印ボタン、右側にはAボタンとBボタンがあります。コントローラーの上部には、左側にL1とL2、右側にR1とR2があります。

ボタン

指示

buttonA

controller.buttonA.released(callback, arg) — Aボタン

buttonB

controller.buttonB.released(callback, arg) — Bボタン

buttonDown

controller.buttonDown.released(callback, arg) — Downボタン

buttonUp

controller.buttonUp.released(callback, arg) — アップボタン

buttonL1

controller.buttonL1.released(callback, arg) — L1ボタン

buttonL2

controller.buttonL2.released(callback, arg) — L2ボタン

buttonL3

controller.buttonL3.released(callback, arg) — L3ボタン

buttonR1

controller.buttonR1.released(callback, arg) — R1ボタン

buttonR2

controller.buttonR2.released(callback, arg) — R2ボタン

buttonR3

controller.buttonR3.released(callback, arg) — R3ボタン

パラメータ

説明

callback

指定されたボタンが離されるたびに実行される、事前に定義された 関数。

arg

オプション。コールバック関数に渡す引数を含むタプル。詳細については、パラメーター付きイベントの使用を参照してください。

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

controller.buttonR1.released(stop_driving)

.changed#

.changed 、指定された軸に沿ってジョイスティックの位置が変化したときに関数を実行します。一度使用すると、その軸に沿ってジョイスティックの位置が変化するたびに、この関数が自動的に実行されます。

使用方法:
利用可能な軸オブジェクトのいずれかをこのメソッドで使用できます。

EXPコントローラーの前面。ジョイスティックの軸番号が赤色で強調表示されています。コントローラーの表面では、左ジョイスティックは左右の動きを軸4、上下の動きを軸3と表示し、右ジョイスティックは左右の動きを軸1、上下の動きを軸2と表示しています。

軸

指示

axis1

controller.axis1.changed(callback, arg) — 右ジョイスティックの水平軸

axis2

controller.axis2.changed(callback, arg) — 右ジョイスティックの垂直軸

axis3

controller.axis3.changed(callback, arg) — 左ジョイスティックの垂直軸

axis4

controller.axis4.changed(callback, arg) — 左ジョイスティックの水平軸

パラメータ

説明

callback

指定された軸に沿ってジョイスティックの位置が変化するたびに実行される、事前に定義された 関数。

arg

オプション。コールバック関数に渡す引数を含むタプル。詳細については、パラメーター付きイベントの使用を参照してください。

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