超音波センサー

../_images/sensor_ultrasonic_lights.png

../_images/pybricks_variables_set_ultrasonic_sensor.svg

class UltrasonicSensor(port)

LEGO® SPIKE カラーセンサー

パラメータ:

port (Port) -- センサーが接続されているポート。

../_images/pybricks_blockDistance_UltrasonicSensor.svg

awaitdistance() int: mm

超音波を利用して、センサーと対象物との距離を計測します。

戻り値:

計測された距離。有効な距離が計測されなかった場合は 2000 mm を返します。

awaitpresence() bool

超音波を検出することにより、他の超音波センサの存在をチェックします。

戻り値:

超音波が検出されれば True 、されなければ False

内蔵ライト

このセンサーは4つのライトを内蔵しています。それぞれのライトの明るさを調整できます。

../_images/pybricks_blockLightOn_ultrasonicsensor_on.svg

../_images/pybricks_blockLightOn_ultrasonicsensor_on_list.svg

awaitlights.on(brightness)

指定した明るさでライトを点灯します。

パラメータ:

brightness (Number or tuple, %) -- 1つの値ですべてのライトの明るさを同時に設定できます。4つの値からなるタプルを使用すると、各ライトの明るさを個別に設定できます。ライトの順番は上の画像のとおりです。

../_images/pybricks_blockLightOn_ultrasonicsensor_off.svg

awaitlights.off()

すべてのライトを消灯します。

サンプルコード

距離の計測とライトの点灯/消灯

from pybricks.pupdevices import UltrasonicSensor
from pybricks.parameters import Port
from pybricks.tools import wait

# センサーを初期化。
eyes = UltrasonicSensor(Port.A)

while True:
    # 計測した距離を表示。
    print(eyes.distance())

    # 対象物を 500mm より近くに検出された場合:
    if eyes.distance() < 500:
        # ライトを点灯。
        eyes.lights.on(100)
    else:
        # ライトを消灯。
        eyes.lights.off()

    # 何が表示されているかが分かるよう、少し待機。
    wait(100)

ライトの明るさを徐々に変更

from pybricks.pupdevices import UltrasonicSensor
from pybricks.parameters import Port
from pybricks.tools import wait, StopWatch

from umath import pi, sin

# センサーを初期化。
eyes = UltrasonicSensor(Port.A)

# タイマーを初期化。
watch = StopWatch()

# ライトの1回の全サイクルが3秒になるようする。
PERIOD = 3000

while True:
    # phase は、現在、単位円のどこにいるかを示す。
    phase = watch.time() / PERIOD * 2 * pi

    # 各ライトは、平均値50、振幅50の正弦波にしたがう。
    # この正弦波を各ライトごとに90度ずつオフセットして、
    # すべてのライトが異なる動きをするようにした。
    brightness = [sin(phase + offset * pi / 2) * 50 + 50 for offset in range(4)]

    # すべてのライトの照度の値を設定。
    eyes.lights.on(brightness)

    # 少し待機。
    wait(50)