このドキュメンテーションは、MicroPython の最新開発ブランチのためのものです。 リリースバージョンでは利用できない機能に言及することがあります。

特定のリリースのドキュメントをお探しの場合は、左側のドロップダウンメニューを使って、 望みのバージョンを選択します。

6. 加速度センサー

ここでは、加速度センサーの値を読み込んで、左傾斜と右傾斜のような状態を LED で示す方法を学習します。

6.1. 加速度センサーの使用方法

pyboard には、ボードの傾斜角度やモーションを検出に使える加速度センサー(小さなバネにつながった小さな錘)があります。x, y, z 方向の各々に対して異なるセンサがあります。加速度センサーの値を得るには、pyb.Accel() オブジェクトを作成してた後に x() メソッドを呼び出します:

>>> accel = pyb.Accel()
>>> accel.x()
7

これは -30 から 30 の間の符号付き整数を返します。測定値には非常にノイズが多いことに注意してください。これは、ボードを完全に静止していても、測定する数値に多少のばらつきがあることを意味します。このため、x() メソッドの値を精密に検査するのではなく、特定の範囲内にあるかどうかを確認するようにしてください。

加速度計を使って、ボードが水平状態でない場合は、ライトを点灯するようにしてみましょう:

accel = pyb.Accel()
light = pyb.LED(3)
SENSITIVITY = 3

while True:
    x = accel.x()
    if abs(x) > SENSITIVITY:
        light.on()
    else:
        light.off()

    pyb.delay(100)

Accel と LED オブジェクトを作成し、加速度センサーの x 方向の値を取得しています。x の大きさがある値 SENSITIVITY より大きい場合に LED を点灯し、そうでない場合は消灯します。ループ中の pyb.delay() を小さくすると、x の値が SENSITIVITY に近い場合に、LED がうっとうしく点滅します。これをボード上で動かし、ボードを左右に傾けて LED を点灯/消灯してみてください。

練習問題: 上のスクリプトを変更して、pyboard の傾き加減に応じて青の LED の照度が変わるようにしてください。ヒント: 値を再スケールする必要があります。LED の照度は 0 から 255 までです。

6.2. 水準器の作成

上の例は x 方向の角度にのみ反応しますが、 y() の値を使い、LED も増やすと、pyboard を水準器にできます:

xlights = (pyb.LED(2), pyb.LED(3))
ylights = (pyb.LED(1), pyb.LED(4))

accel = pyb.Accel()
SENSITIVITY = 3

while True:
    x = accel.x()
    if x > SENSITIVITY:
        xlights[0].on()
        xlights[1].off()
    elif x < -SENSITIVITY:
        xlights[1].on()
        xlights[0].off()
    else:
        xlights[0].off()
        xlights[1].off()

    y = accel.y()
    if y > SENSITIVITY:
        ylights[0].on()
        ylights[1].off()
    elif y < -SENSITIVITY:
        ylights[1].on()
        ylights[0].off()
    else:
        ylights[0].off()
        ylights[1].off()

    pyb.delay(100)

まず、x 方向と y 方向の LED オブジェクトのタプルを作成します。タプルは、Python では不変なオブジェクトです。つまり、ひとたびそれらが作成されると変更することはできません。先の例と同様に処理しますが、正と負の x 値について異なる LED を点灯させます。y方向についても同じことを行います。これは大して洗練されていませんが、とにかく動きます。これを pyboard で実行すると、ボードの傾きに応じて異なるLEDが点灯するはずです。