2022年6月10日金曜日

Maker Pi RP2040とCircuitPythonで、Grove超音波センサーとGrove 7セグメント4桁ディスプレイを接続して距離を表示する

Maker Pi RP2040には7つのGroveコネクタがあり、様々なGroveデバイスを接続することが出来ます。Grove超音波センサーとGrove 7セグメント4桁ディスプレイを接続して距離を表示するには、以下の手順を実行します。

〇Maker Pi RP2040と接続したGrove Ultrasonic RangerとGrove 4-Digit Display

実行手順

1. Maker Pi RP2040をパソコンにUSBで接続して、Mu Editorを起動します。

2. 以下のリポジトリ(CircuitPython library für the TM1637 7-Segment Display)からCircuitPython用の4-Digit Displayドライバクラスを取得します。
https://github.com/bablokb/circuitpython-tm1637
以下のpythonソースをダウンロードして、Maker Pi RP2040のlibディレクトリ以下にエクスプローラーなどを用いてコピーします。
https://github.com/bablokb/circuitpython-tm1637/blob/master/files/lib/TM1637.py

3. 以下のリポジトリからGrove Ultrasonic Rangerのドライバクラスを取得します。
https://github.com/derhexenmeister/GroveUltrasonicRanger
以下のpythonソースをダウンロードして、Maker Pi RP2040のlibディレクトリ以下にエクスプローラーなどを用いてコピーします。
https://github.com/derhexenmeister/GroveUltrasonicRanger/blob/master/grove_ultrasonic_ranger.py

4. code.pyを開いて、以下のプログラムを書き込みます。
Grove Ultrasonic RangerはGrove2コネクタ、Grove 7セグメント4桁ディスプレイはGrove6コネクタに接続します。超音波センサーに物を近づけたり遠ざけたりすると表示される距離が変わることを確認します。
※circuit python 7.2.5以降にアップグレードしてから実行してください。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import board
import time
import digitalio
import tm1637
import analogio
import grove_ultrasonic_ranger
import neopixel_write

# Grove 4-digit displayの初期化
# Grove6コネクタを使用する場合はGP27とGP26を使用します
tm = tm1637.TM1637(clk=board.GP27, dio=board.GP26)

# 明るさを設定
tm.brightness(5)

# RGB LEDを初期化
dio18 = digitalio.DigitalInOut(board.GP18)
dio18.direction = digitalio.Direction.OUTPUT
pixel_buf = bytearray([0, 0, 0, 0, 0, 0])
neopixel_write.neopixel_write(dio18, pixel_buf)

# Groveコネクタ2にGrove Ultrasonic Sensorを接続
gur = grove_ultrasonic_ranger.GroveUltrasonicRanger(sig_pin=board.GP3, unit=1, timeout=1.5)

distance_value=0
while True:
    try:
        distance_value = int(gur.distance)
        tm.number(distance_value)
    except RuntimeError:
        # タイムアウトエラーの場合は一瞬赤で表示
        pixel_buf = bytearray([0, 128, 0, 0, 128, 0])
        neopixel_write.neopixel_write(dio18, pixel_buf)
        time.sleep(0.1)
        pixel_buf = bytearray([0, 0, 0, 0, 0, 0])
        neopixel_write.neopixel_write(dio18, pixel_buf)
    time.sleep(0.1)

関連情報

・Maker Pi RP2040に関する他の情報はこちらを参照してください。

・Mu Editorに関する他の情報はこちらを参照してください。

0 件のコメント:

コメントを投稿