コントローラ#

導入#

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

IQ(第2世代)ブレインは、IQ(第2世代)コントローラーまたはIQ(第1世代)コントローラーのどちらにも接続できます。IQ(第1世代)コントローラーには、青色のスマートラジオが搭載されている必要があります。

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

コントローラーで設定されたアクションを無効にします。

# 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第2世代コントローラーの前面と背面図。すべてのボタンが黄色で強調表示されています。コントローラーの表面には、左上と右上に2つのジョイスティックボタンがあり、左ジョイスティックの下に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(第2世代)コントローラーのみ

buttonLDown

controller.buttonLDown.pressing() — L ▼ボタン

buttonLUp

controller.buttonLUp.pressing() — L ▲ ボタン

buttonR3

controller.buttonR3.pressing() — 右ジョイスティックボタン、IQ(第2世代)コントローラーのみ

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

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

4つのジョイスティック軸が強調表示されたIQ第2世代コントローラー。左ジョイスティックでは、軸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第2世代コントローラーの前面と背面図。すべてのボタンが黄色で強調表示されています。コントローラーの表面には、左上と右上に2つのジョイスティックボタンがあり、左ジョイスティックの下に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(第2世代)コントローラーのみ

buttonLDown

controller.buttonLDown.pressed(callback, arg) — L ▼ボタン

buttonLUp

controller.buttonLUp.pressed(callback, arg) — L ▲ ボタン

buttonR3

controller.buttonR3.pressed(callback, arg) — 右ジョイスティックボタン、IQ(第2世代)コントローラーのみ

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第2世代コントローラーの前面と背面図。すべてのボタンが黄色で強調表示されています。コントローラーの表面には、左上と右上に2つのジョイスティックボタンがあり、左ジョイスティックの下に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(第2世代)コントローラーのみ

buttonLDown

controller.buttonLDown.released(callback, arg) — L ▼ボタン

buttonLUp

controller.buttonLUp.released(callback, arg) — L ▲ ボタン

buttonR3

controller.buttonR3.released(callback, arg) — 右ジョイスティックボタン、IQ(第2世代)コントローラーのみ

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

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

4つのジョイスティック軸が強調表示されたIQ第2世代コントローラー。左ジョイスティックでは、軸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()