リモコン

../_images/pupdevice-remote.png

../_images/pybricks_variables_set_remote_connect_any.svg

../_images/pybricks_variables_set_remote_connect_name.svg

class Remote(name=None, timeout=10000)

LEGO® Powered Up Bluetooth リモコン。

このクラスをインスタンス化すると、ハブはリモコンを検索し、自動的に接続します。

リモコンは、白色の点滅で示されるように、電源が入っており、接続可能な状態である必要があります。

パラメータ:
  • name (str) -- リモコンの Bluetooth 名を指定します。名前を指定しない場合、ハブは最初に見つけたリモコンに接続します。

  • timeout (Number, ms) -- リモコンを検索する時間。

name(name)
name() str

リモコンの Bluetooth 名を設定または取得します。

パラメータ:

name (str) -- リモートの新しい Bluetooth名。name を指定しない場合、このメソッドは現在の名前を返します。

../_images/pybricks_blockLightOnColor_remote_on.svg

awaitlight.on(color)

指定した色でライトを点灯します。

パラメータ:

color (Color) -- ライトの色。

../_images/pybricks_blockLightOnColor_remote_on.svg

awaitlight.off()

ライトを消灯します。

../_images/pybricks_blockButtonIsPressed_Remote.svg

buttons.pressed() Set[Button]

どのボタンが押されているかをチェックします。

戻り値:

押されているボタンの集合。

awaitdisconnect()

Disconnects the remote from the hub.

サンプルコード

どのボタンが押されているかのチェック

from pybricks.pupdevices import Remote
from pybricks.parameters import Button
from pybricks.tools import wait

# リモコンに接続。
my_remote = Remote()

while True:
    # どのボタンが押されているかのチェック。
    pressed = my_remote.buttons.pressed()

    # 結果を表示。
    print("pressed:", pressed)

    # 特定のボタンをチェック。
    if Button.CENTER in pressed:
        print("You pressed the center button!")

    # 結果を確認できるよう、少し待機。
    wait(100)

リモコンのライト色の変更

from pybricks.pupdevices import Remote
from pybricks.parameters import Color
from pybricks.tools import wait

# リモコンに接続。
remote = Remote()

while True:
    # 色を赤に設定。
    remote.light.on(Color.RED)
    wait(1000)

    # 色を青に設定。
    remote.light.on(Color.BLUE)
    wait(1000)

ボタンを使ったライト色の変更

from pybricks.pupdevices import Remote
from pybricks.parameters import Button, Color


def button_to_color(buttons):

    # ボタンごとの色を返す。
    if Button.LEFT_PLUS in buttons:
        return Color.RED
    if Button.LEFT_MINUS in buttons:
        return Color.GREEN
    if Button.LEFT in buttons:
        return Color.ORANGE
    if Button.RIGHT_PLUS in buttons:
        return Color.BLUE
    if Button.RIGHT_MINUS in buttons:
        return Color.YELLOW
    if Button.RIGHT in buttons:
        return Color.CYAN
    if Button.CENTER in buttons:
        return Color.VIOLET

    # デフォルトの色を返す。
    return Color.NONE


# リモコンに接続。
remote = Remote()

while True:
    # ボタンが押されるのを待つ。
    pressed = ()
    while not pressed:
        pressed = remote.buttons.pressed()

    # ボタンのコードを色に変換。
    color = button_to_color(pressed)

    # リモコンのライト色を設定。
    remote.light.on(color)

    # すべてのボタンを放すまで待機。
    while pressed:
        pressed = remote.buttons.pressed()

タイムアウト設定の利用

timeout 引数を使うと、ハブがリモコンを検索する時間を変更できます。 None を選択すると、永遠に検索し続けます。

from pybricks.pupdevices import Remote

# あらゆるリモコンに接続する。見つけるまで永遠に探し続ける。
my_remote = Remote(timeout=None)

print("Connected!")

指定したタイムアウト時間内にリモコンが見つからなかった場合、 OSError が発生します。この例外をキャッチして、リモコンが利用できない場合に他のコードを実行するようにできます。

from pybricks.pupdevices import Remote

try:
    # リモコンを5秒間検索。
    my_remote = Remote(timeout=5000)

    print("Connected!")

    # ここに、リモコンを使うコードを記述できる。

except OSError:

    print("Could not find the remote.")

    # ここに、リモコンを使わずにロボットに
    # 何かをさせることができる。

リモコンの名前を変更

リモコンの Bluetooth 名を変更できます。工場出荷時の名前は Handset です。

../_images/pybricks_variables_set_remote_connect_rename.svg

from pybricks.pupdevices import Remote

# リモコンに接続。
my_remote = Remote()

# 現在のリモコンの名前を表示。
print(my_remote.name())

# 新しい名前を設定。
my_remote.name("truck2")

print("Done!")

この名前は、リモートに接続するときに指定できます。これにより、近くに複数のリモコンがある場合に、適切なリモコンを選択できます。

../_images/pybricks_variables_set_remote_connect_name.svg

from pybricks.pupdevices import Remote
from pybricks.tools import wait

# truck2 という名前のリモコンに接続。
truck_remote = Remote("truck2", timeout=None)

print("Connected!")

wait(2000)