リモコン

../_images/pupdevice-remote.png
remotescan and connect
my remoteremoteconnect to
class Remote(name=None, timeout=10000, connect=True)

LEGO® Powered Up Bluetooth リモコン。

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

  • timeout (Number, ms) -- How long to search for the remote. Choose None to wait indefinitely.

  • connect (bool) -- 接続をスキップするには False を指定します。後で connect() を呼び出すことで接続できます。

例外:

OSError -- 接続に失敗またはタイムアウトした場合に発生します。

awaitconnect()

デバイスに接続します。切断した場合、または connect=False で初期化した場合にのみ必要です。

例外:

OSError -- 接続に失敗またはタイムアウトした場合に発生します。

name(name)
name() str

デバイスの Bluetooth 名を設定または取得します。

パラメータ:

name (str) -- デバイスの新しい Bluetooth 名。名前を指定しない場合、このメソッドは現在の名前を返します。

例外:

OSError -- デバイスが接続されていない場合に発生します。

redremotelighton
awaitlight.on(color)

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

パラメータ:

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

redremotelighton
awaitlight.off()

ライトを消灯します。

remotecenteris pressed
buttons.pressed() Set[Button]

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

戻り値:

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

awaitdisconnect()

デバイスを切断します。

例外:

OSError -- 切断に失敗した場合に発生します。

サンプルコード

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

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 です。

new nameremoteconnect and rename to
from pybricks.pupdevices import Remote

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

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

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

print("Done!")

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

my remoteremoteconnect to
from pybricks.pupdevices import Remote
from pybricks.tools import wait

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

print("Connected!")

wait(2000)