コントローラ#

導入#

V5コントローラーには、ボタン、2つのジョイスティック、振動モーター、および画面が搭載されています。コントローラーのメソッドを使用すると、ボタンの押下を確認したり、ジョイスティックの動きを読み取ったり、コントローラーを振動させたり、設定済みのコントローラーアクションを有効または無効にしたり、コントローラーのイベント発生時に関数を実行したり、コントローラーの画面にテキストを表示したりできます。

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

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

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

アクション — コントローラーを振動させる、または設定済みのコントローラーアクションを有効/無効にする。

  • rumble — コントローラーで振動パターンを再生します。

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

画面 — コントローラー画面にテキストと数字を表示する。

  • print — コントローラー画面にテキスト、数値、または変数値を表示します。

  • set_cursor — コントローラ画面上の指定された行と列にカーソルを移動します。

  • column — コントローラー画面上の現在のカーソル列を返します。

  • row — コントローラ画面上の現在のカーソル行を返します。

  • clear_screen — コントローラー画面をクリアします。

  • clear_row — コントローラー画面の 1 行をクリアします。

  • next_row — コントローラー画面でカーソルを次の行に移動します。

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

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

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

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

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

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

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

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

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

行動#

rumble#

rumble コントローラー上で振動パターンを再生します。パターン文字列では、ピリオドは短い振動、ハイフンは長い振動、スペースは休止を表します。

Usage:
controller_1.rumble(pattern)

パラメータ

説明

pattern

ランブルパターンを表す、ピリオド、ハイフン、スペースで構成された文字列。

# Rumble the Controller with a short-short-long-long pattern
controller_1.rumble("..--")

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_1.axis3.position() > 0:
        drivetrain.drive(FORWARD)
    elif controller_1.axis3.position() < 0:
        drivetrain.drive(REVERSE)
    # Press A to use Controller configured actions again
    elif controller_1.buttonA.pressing():
        break
    else:
        drivetrain.stop()

    wait(20, MSEC)

remote_control_code_enabled = True

画面#

V5コントローラーの画面は、テキストと数字を表示するための3行19列で構成されています。

V5コントローラー画面のスクリーンショット。印刷可能領域の行と列が表示されています。1行目1列目は左上隅から始まり、3行目19列目は右下隅にあります。

print#

controller_1.screen.print 、現在のカーソル位置を使用して、コントローラ画面にテキスト、数値、または変数値を表示します。

Usage:
controller_1.screen.print(value, sep, precision)

パラメータ

説明

value

コントローラー画面に表示するテキスト、数値、または変数値。複数の値を表示する場合は、値をカンマで区切ってください。

sep

オプション。値の間に挿入する文字列。これはキーワード引数として記述する必要があります。例: sep=”- “。デフォルトは ” “です。

precision

オプション。単純な数値を表示する際に表示する小数点以下の桁数。これはキーワード引数として記述する必要があります(例: precision=2)。デフォルト値は 2です。

# Print a number on the Controller screen
controller_1.screen.print(1)

# Print multiple numbers separated by hyphens
controller_1.screen.print(1, 2, 3, 4, sep="-")

# Print a number using one decimal place
controller_1.screen.print(1 / 3, precision=1)

set_cursor#

set_cursor は、コントローラ画面上の指定された行と列にカーソルを移動します。次に印刷される値は、その位置に表示されます。

Usage:
controller_1.screen.set_cursor(row, col)

パラメータ

説明

row

カーソルの行は、 1 から 3までです。

col

カーソルの列は、 1 から 19までです。

# Print text at row 2, column 1
controller_1.screen.set_cursor(2, 1)
controller_1.screen.print("Ready")

column#

column は、コントローラー画面にテキストが印刷される現在の列を返します。

Usage:
controller_1.screen.column()

パラメータ

説明

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

# Print the current column number
controller_1.screen.set_cursor(2, 3)
controller_1.screen.print(controller_1.screen.column())

row#

row は、コントローラー画面にテキストが印刷される現在の行を返します。

Usage:
controller_1.screen.row()

パラメータ

説明

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

# Print the current row number
controller_1.screen.set_cursor(2, 3)
controller_1.screen.print(controller_1.screen.row())

clear_screen#

clear_screen はコントローラー画面をクリアし、カーソルを元の位置に戻します。

Usage:
controller_1.screen.clear_screen()

パラメータ

説明

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

# Print text, then clear the Controller screen
controller_1.screen.print("VEX V5")
wait(2, SECONDS)
controller_1.screen.clear_screen()

clear_row#

clear_row 、コントローラー画面の 1 行をクリアします。

Usage:
controller_1.screen.clear_row(row)

パラメータ

説明

row

オプション。クリアする行 1 から 3まで)。行が指定されていない場合は、現在のカーソル行がクリアされます。

# Clear row 2 on the Controller screen
controller_1.screen.clear_row(2)

next_row#

next_row 、カーソルをコントローラ画面の次の行の 1 列目に移動します。次に印刷される値はその行に表示されます。

Usage:
controller_1.screen.next_row()

パラメータ

説明

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

# Print on two rows
controller_1.screen.print("VEX V5")
controller_1.screen.next_row()
controller_1.screen.print("Controller")

ゲッター#

.pressing#

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

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

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

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

V5コントローラーの前面と背面。ボタンは黄色で強調表示されています。コントローラーの表面には、左側に上、下、左、右の矢印ボタンがあり、右側には12時の位置から時計回りにX、A、B、Yボタンがあります。コントローラーの背面には、左側にL1、L2、R1、R2ボタンがあります。

ボタン

指示

buttonA

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

buttonB

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

buttonX

controller_1.buttonX.pressing() — Xボタン

buttonY

controller_1.buttonY.pressing() — Yボタン

buttonDown

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

buttonUp

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

buttonLeft

controller_1.buttonLeft.pressing() — 左ボタン

buttonRight

controller_1.buttonRight.pressing() — 右ボタン

buttonL1

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

buttonL2

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

buttonR1

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

buttonR2

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

パラメータ

説明

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

# Turn right while L1 is pressed
while True:
    if controller_1.buttonL1.pressing():
        drivetrain.turn(RIGHT)
    else:
        drivetrain.stop()

    wait(20, MSEC)

.position#

.position 、ジョイスティック軸の位置を -100 から 100までの数値として返します。

このメソッドは、 controller_1.axis1のような特定の軸オブジェクトに対して呼び出す必要があります。

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

ジョイスティックの周りの軸にラベルが付けられたVEX V5コントローラー。軸1と2は右ジョイスティックの周り、軸3と4は左ジョイスティックの周りです。

軸

指示

axis1

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

axis2

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

axis3

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

axis4

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

パラメータ

説明

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

# Turn with the left joystick
remote_control_code_enabled = False

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

    wait(20, MSEC)

コールバック#

.pressed#

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

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

V5コントローラーの前面と背面。ボタンは黄色で強調表示されています。コントローラーの表面には、左側に上、下、左、右の矢印ボタンがあり、右側には12時の位置から時計回りにX、A、B、Yボタンがあります。コントローラーの背面には、左側にL1、L2、R1、R2ボタンがあります。

ボタン

指示

buttonA

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

buttonB

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

buttonX

controller_1.buttonX.pressed(callback, arg) — Xボタン

buttonY

controller_1.buttonY.pressed(callback, arg) — Yボタン

buttonDown

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

buttonUp

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

buttonLeft

controller_1.buttonLeft.pressed(callback, arg) — 左ボタン

buttonRight

controller_1.buttonRight.pressed(callback, arg) — 右ボタン

buttonL1

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

buttonL2

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

buttonR1

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

buttonR2

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

パラメータ

説明

callback

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

arg

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

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

controller_1.buttonA.pressed(drive_forward)

.released#

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

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

V5コントローラーの前面と背面。ボタンは黄色で強調表示されています。コントローラーの表面には、左側に上、下、左、右の矢印ボタンがあり、右側には12時の位置から時計回りにX、A、B、Yボタンがあります。コントローラーの背面には、左側にL1、L2、R1、R2ボタンがあります。

ボタン

指示

buttonA

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

buttonB

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

buttonX

controller_1.buttonX.released(callback, arg) — Xボタン

buttonY

controller_1.buttonY.released(callback, arg) — Yボタン

buttonDown

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

buttonUp

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

buttonLeft

controller_1.buttonLeft.released(callback, arg) — 左ボタン

buttonRight

controller_1.buttonRight.released(callback, arg) — 右ボタン

buttonL1

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

buttonL2

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

buttonR1

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

buttonR2

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

パラメータ

説明

callback

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

arg

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

# Drive backward when A is released
def back_up():
    drivetrain.drive_for(REVERSE, 100, MM)

controller_1.buttonA.released(back_up)

.changed#

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

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

ジョイスティックの周りの軸にラベルが付けられたVEX V5コントローラー。軸1と2は右ジョイスティックの周り、軸3と4は左ジョイスティックの周りです。

軸

指示

axis1

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

axis2

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

axis3

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

axis4

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

パラメータ

説明

callback

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

arg

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

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

controller_1.axis4.changed(tada_sound)

建設業者#

Controller#

Controller は、コントローラーオブジェクトを作成します。コントローラーオブジェクトを手動で作成する必要があるのは、VEXcode以外でコントローラーを設定する場合のみです。

Usage:
Controller(controller_type)

パラメータ

説明

controller_type

オプション。作成するコントローラーの種類: PRIMARY はブレインに接続されたプライマリーコントローラー、 PARTNER はブレインに接続されたセカンドコントローラーです。

# Create the primary Controller
controller_1 = Controller(PRIMARY)

# Create a partner Controller
controller_2 = Controller(PARTNER)