フォースセンサー

../_images/pupdevice-force.png
Aforce sensoron
class ForceSensor(port)

LEGO® SPIKE フォースセンサー

パラメータ:

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

force sensorforce
awaitforce() float: N

センサーにかかる圧力を計測します。

戻り値:

計測された圧力(最大約 10.00 N)。

force sensordistance
awaitdistance() float: mm

センサーのボタンがどれだけ動いたか計測します。

戻り値:

約 8.00 mm までの移動量。

awaitpressed(force=3) bool

センサーボタンが押されたかどうかをチェックする。

パラメータ:

force (Number, N) -- 押されていると判断できる最小の力。

戻り値:

センサーが押されていれば True 、押されていなければ False

awaittouched() bool

センサーがタッチされたかどうかをチェックします。

pressed() と似ていますが、計測した圧力がゼロのままでも、ボタンがわずかに動いたことを検出します。

戻り値:

センサーに触れたり押されたりした場合は True 、そうでない場合は False

サンプルコード

圧力と移動の計測

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

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

while True:
    # このセンサーから得られる情報をすべて読み取る。
    force = button.force()
    dist = button.distance()
    press = button.pressed()
    touch = button.touched()

    # 値を表示
    print("Force", force, "Dist:", dist, "Pressed:", press, "Touched:", touch)

    # センサーボタンを押して、値がどうなるかを確認する。

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

最大圧力の計測

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

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


# ボタンが押されるまで待機する関数。ボタンが離されるまで、検出された力の最大値を
# 記録する。そして、その最大値を返す。
def wait_for_force():

    # 圧力がほぼゼロの間は何もしないで待機。
    print("Waiting for force.")
    while button.force() <= 0.1:
        wait(10)

    # あとは、圧力が再びゼロになるのを待つことで、解放を待つ。
    print("Waiting for release.")

    # それを待つ間、圧力を読み続け、最大圧力を記憶する。
    # これは、最大値を0に初期化し、大きな力を検出するたびに
    # 更新することで行う。
    maximum = 0
    force = 10
    while force > 0.1:
        # 圧力を読み取る。
        force = button.force()

        # 計測した圧力の方が大きい場合は、最大値を更新する。
        if force > maximum:
            maximum = force

        # 待機したあと、再度計測する。
        wait(10)

    # 最大圧力を返す。
    return maximum


# センサーボタンが押されるのを待ち続ける。
# 最大圧力を表示し、それを繰り返す。
while True:
    peak = wait_for_force()
    print("Released. Peak force: {0} N\n".format(peak))