Powered Up デバイス

../_images/iodevice-pupdevice1.png
class PUPDevice(port)

Powered Up モーターまたはセンサー。

パラメータ:

port (Port) -- デバイスが接続されているポート。

info() Dict

デバイスについての情報を取得します。

戻り値:

デバイス id のような情報を持った辞書。

awaitread(mode) Tuple

指定のモードで値を読み取ります。

パラメータ:

mode (int) -- デバイスモード。

戻り値:

センサーから読み取った値。

awaitwrite(mode, data)

センサーに値を書き出します。一部のセンサーとモードのみ対応しています。

パラメータ:
  • mode (int) -- デバイスモード。

  • data (tuple) -- 書き出す値。

サンプルコード

デバイスの検出

from pybricks.iodevices import PUPDevice
from pybricks.parameters import Port
from uerrno import ENODEV

# デバイスの識別子とその名称を並べた辞書。
device_names = {
    # pybricks.pupdevices.DCMotor
    1: "Wedo 2.0 Medium Motor",
    2: "Powered Up Train Motor",
    # pybricks.pupdevices.Light
    8: "Powered Up Light",
    # pybricks.pupdevices.Motor
    38: "BOOST Interactive Motor",
    46: "Technic Large Motor",
    47: "Technic Extra Large Motor",
    48: "SPIKE Medium Angular Motor",
    49: "SPIKE Large Angular Motor",
    65: "SPIKE Small Angular Motor",
    75: "Technic Medium Angular Motor",
    76: "Technic Large Angular Motor",
    # pybricks.pupdevices.TiltSensor
    34: "Wedo 2.0 Tilt Sensor",
    # pybricks.pupdevices.InfraredSensor
    35: "Wedo 2.0 Infrared Motion Sensor",
    # pybricks.pupdevices.ColorDistanceSensor
    37: "BOOST Color Distance Sensor",
    # pybricks.pupdevices.ColorSensor
    61: "SPIKE Color Sensor",
    # pybricks.pupdevices.UltrasonicSensor
    62: "SPIKE Ultrasonic Sensor",
    # pybricks.pupdevices.ForceSensor
    63: "SPIKE Force Sensor",
    # pybricks.pupdevices.ColorLightMatrix
    64: "SPIKE 3x3 Color Light Matrix",
}

# 既知のポートのリストを作成。
ports = [Port.A, Port.B]

# 対応するハブでは、さらにポートを追加。
try:
    ports.append(Port.C)
    ports.append(Port.D)
except AttributeError:
    pass

# 対応するハブでは、さらにポートを追加。
try:
    ports.append(Port.E)
    ports.append(Port.F)
except AttributeError:
    pass

# 利用できるポートを巡回。
for port in ports:

    # デバイスが繋げられている場合は、そのの取得を試みます。
    try:
        device = PUPDevice(port)
    except OSError as ex:
        if ex.args[0] == ENODEV:
            # このポートにはデバイスが見つからなかった。
            print(port, ": ---")
            continue
        else:
            raise

    # デバイス id を取得
    id = device.info()["id"]

    # デバイス名を調べる。
    try:
        print(port, ":", device_names[id])
    except KeyError:
        print(port, ":", "Unknown device with ID", id)