ラベル CircuitPython の投稿を表示しています。 すべての投稿を表示
ラベル CircuitPython の投稿を表示しています。 すべての投稿を表示

2022年7月10日日曜日

Maker Pi RP2040で赤外線リモコンを受信する

Maker Pi RP2040とCircuitPythonで赤外線リモコンを受信するには、以下の手順を実行します。

・Maker Pi RP2040と赤外線センサーを接続した写真

実行手順

1. 部品の用意
Maker Pi RP2040以外に以下の部品を用意します。
・赤外線リモコン受信モジュールOSRB38C9AA(2個入)
https://akizukidenshi.com/catalog/g/gI-04659/

・オプトサプライ赤外線リモコン
https://akizukidenshi.com/catalog/g/gM-07245/

2. 部品の接続
OSRB38C9AAのピン配列を受光面&足を下にした面から見て、以下のように接続します。
OSRB38C9AAの左側のピン -> Maker Pi RP2040のコネクター1のGP1ピン
OSRB38C9AAの中央のピン -> Maker Pi RP2040のコネクター1のGNDピン
OSRB38C9AAの右側のピン -> Maker Pi RP2040のコネクター1の3V3(OUT)ピン

3. adafruit_irremoteモジュールのダウンロード
以下のページからモジュールのソースコードをダウンロードして、Maker Pi RP2040のlibフォルダに保存します。
https://github.com/adafruit/Adafruit_CircuitPython_IRRemote/blob/main/adafruit_irremote.py

4. code.pyを開いて、以下のプログラムを書き込みます。
オプトサプライの赤外線リモコンのA,B,CボタンでRGB LEDの発光が変化し、電源ボタンで消灯することを確認します。
※circuit python 7.2.5以降にアップグレードしてから実行してください。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import time
import board
import pulseio
import digitalio
import adafruit_irremote
import neopixel_write

pulsein = pulseio.PulseIn(board.GP1, maxlen=108, idle_state=True)
decoder = adafruit_irremote.NonblockingGenericDecode(pulsein)

keydata ={
  27:"Power",
  31:"A",
  30:"B",
  26:"C",
  141:"Upper Left",
  5:"Up",
  132:"Upper Right",
  8:"Left",
  4:"Center",
  1:"Right",
  136:"Bottom Left",
  0:"Down",
  129:"Bottom Right",
}

# RGB LEDを初期化
dio18 = digitalio.DigitalInOut(board.GP18)
dio18.direction = digitalio.Direction.OUTPUT

while True:
    for message in decoder.read():
        if isinstance(message, adafruit_irremote.IRMessage):
            if len(message.code) == 4 and message.code[3] in keydata:
                print(keydata[message.code[3]]) 
                if message.code[3] == 31:
                    # Aのボタンの場合は2つのRGBLEDを緑色で点灯(GRB)
                    pixel_buf = bytearray([128, 0, 0, 128, 0, 0])
                    neopixel_write.neopixel_write(dio18, pixel_buf)
                if message.code[3] == 30:
                    # Bのボタンの場合は2つのRGBLEDを赤色で点灯(GRB)
                    pixel_buf = bytearray([0, 128, 0, 0, 128, 0])
                    neopixel_write.neopixel_write(dio18, pixel_buf)
                if message.code[3] == 26:
                    # Cのボタンの場合は2つのRGBLEDを青色で点灯(GRB)
                    pixel_buf = bytearray([0, 0, 128, 0, 0, 128])
                    neopixel_write.neopixel_write(dio18, pixel_buf)
                if message.code[3] == 27:
                    # 電源のボタンの場合は2つのRGBLEDを消灯(GRB)
                    pixel_buf = bytearray([0, 0, 0, 0, 0, 0])
                    neopixel_write.neopixel_write(dio18, pixel_buf)

関連情報

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

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

2022年6月15日水曜日

Maker Pi RP2040とCircuitPythonで、Grove DHT20温湿度センサーを接続して温度・湿度を計測する

Maker Pi RP2040には7つのGroveコネクタがあり、様々なGroveデバイスを接続することが出来ます。Grove DHT20温湿度センサー(Grove - Temperature&Humidity Sensor DHT20 )を接続して温度・湿度を計測するには、以下の手順を実行します。

〇Maker Pi RP2040と接続したGrove DHT20温湿度センサー(Grove - Temperature&Humidity Sensor DHT20 )

実行手順

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

2. 以下のリポジトリ(Adafruit_CircuitPython_AHTx0)からCircuitPython用のDHT20ドライバクラスを取得します。
https://github.com/adafruit/Adafruit_CircuitPython_AHTx0
以下のpythonソースをダウンロードして、Maker Pi RP2040のlibディレクトリ以下にエクスプローラーなどを用いてコピーします。
https://github.com/adafruit/Adafruit_CircuitPython_AHTx0/blob/main/adafruit_ahtx0.py

3. code.pyを開いて、以下のプログラムを書き込みます。
シリアルに温度・湿度の計測値を出力し、温度が高いほどRGB LED0を明るく赤色に点灯させ、湿度が高いほどRGB LED1を明るく青色に点灯します。
DHT20温湿度センサーはGrove2コネクタに接続します。
※circuit python 7.2.5以降にアップグレードしてから実行してください。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import board
import time
import digitalio
import adafruit_ahtx0
import busio
import neopixel_write

# 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)

# DHT20初期化
i2c = busio.I2C(board.GP3, board.GP2, frequency=1000000)
dht20 = adafruit_ahtx0.AHTx0(i2c)

while True:
    # 温度が高いほど明るい赤で表示
    temp = dht20.temperature
    print("Temp: %0.1f C" % temp)
    temp = 0 if temp < 0 else temp
    temp = 40 if temp > 40 else temp
    # 湿度が高いほど明るい青で表示
    humi = dht20.relative_humidity
    print("Humidity: %0.1f %%" % humi)
    humi = int(humi/100*255)

    pixel_buf = bytearray([0, int(temp/40*255), 0, 0, 0, humi])
    neopixel_write.neopixel_write(dio18, pixel_buf)
    time.sleep(1)

関連情報

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

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

2022年6月11日土曜日

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

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

〇Maker Pi RP2040と接続したGrove light sensorと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. code.pyを開いて、以下のプログラムを書き込みます。
Grove光センサーはGrove7コネクタ、Grove 7セグメント4桁ディスプレイはGrove6コネクタに接続します。光センサーに明かりを近づけたり遠ざけたりすると表示されるセンサー値が変わることを確認します。
※circuit python 7.2.5以降にアップグレードしてから実行してください。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import board
import time
import digitalio
import tm1637
import analogio

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

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

# Grove7コネクタ -> GP28
adc = analogio.AnalogIn(board.GP28)

while True:
    # センサー値を0-9999に変換
    sv = int(adc.value/65535*9999)
    tm.number(sv)
    time.sleep(0.1)

関連情報

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

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

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に関する他の情報はこちらを参照してください。

2022年6月9日木曜日

Maker Pi RP2040とCircuitPythonで、Grove 7セグメント4桁ディスプレイを接続して数値を表示する

Maker Pi RP2040には7つのGroveコネクタがあり、様々なGroveデバイスを接続することが出来ます。Grove 7セグメント4桁ディスプレイ(Grove 4-Digit Display)を接続して数値を表示するには、以下の手順を実行します。

〇Maker Pi RP2040と接続した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. code.pyを開いて、以下のプログラムを書き込みます。 初期状態では0の数値が表示され、GP20ボタンで数値を増加・GP21ボタンで数値を減少する事ができます。Grove 7セグメント4桁ディスプレイはGrove6コネクターに接続します。
※circuit python 7.2.5以降にアップグレードしてから実行してください。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import board
import time
import digitalio
import tm1637

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

# GP20ボタンの初期化
dio20 = digitalio.DigitalInOut(board.GP20)
dio20.direction = digitalio.Direction.INPUT
dio20.pull = digitalio.Pull.UP

# GP21ボタンの初期化
dio21 = digitalio.DigitalInOut(board.GP21)
dio21.direction = digitalio.Direction.INPUT
dio21.pull = digitalio.Pull.UP

num=0
while True:
    # GP20ボタンが押されたら数値アップ
    if dio20.value == False:
        num = num+1 if num < 10000 else 0
    # GP21ボタンが押されたら数値ダウン
    if dio21.value == False:
        num = num-1 if num > 0 else 9999
    tm.number(num)
    time.sleep(0.1)

関連情報

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

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

2022年6月8日水曜日

Maker Pi RP2040とCircuitPythonで、Grove sound sensorを接続して音の大きさに合わせてLEDメーター・RGB LEDを光らせる

Maker Pi RP2040には7つのGroveコネクタがあり、様々なGroveデバイスを接続することが出来ます。GroveアナログデバイスはGrove5-7コネクタに接続します。Grove Sound Sensorに応じてLEDバーをメーター表示・RGB LEDの明るさを変えるには、以下の手順を実行します。

〇Maker Pi RP2040と接続したGrove Sound Sensor

実行手順

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

2. code.pyを開いて、以下のプログラムを書き込みます。
アナログ入力の初期化はanalogio.AnalogInで行います。アナログ値を取得して、10段階の数値に変換し、それに合わせてLEDバーの点灯・消灯をコントロールします。また、音が大きいほど255に近い値となるように計算した値をRGB LEDに設定して明るさを変えます。
※circuit python 7.2.5以降にアップグレードしてから実行してください。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import board
import time
import digitalio
import analogio
import neopixel_write

# RGB LEDを初期化
dio18 = digitalio.DigitalInOut(board.GP18)
dio18.direction = digitalio.Direction.OUTPUT

pins = [
  board.GP0,
  board.GP1,
  board.GP2,
  board.GP3,
  board.GP4,
  board.GP5,
  board.GP6,
  board.GP7,
  board.GP16,
  board.GP17,
#  board.GP26,
#  board.GP27,
#  board.GP28,
]

led_meter = []


# ピンの初期化
for pin in pins:
    dio = digitalio.DigitalInOut(pin)
    dio.direction = digitalio.Direction.OUTPUT
    # LEDメーター用配列へ
    led_meter.append(dio)

# Groveアナログコネクタと対応するピンは以下になります。
# Grove5コネクタ -> GP26
# Grove6コネクタ -> GP27
# Grove7コネクタ -> GP28
adc = analogio.AnalogIn(board.GP26)

while True:
    # アナログ値を取得して0-9のレベル値
    meter_level = int(adc.value/65536*10)
    # LEDバーをレベル値に応じて点灯・消灯
    for li in range(0, 10):
        if li <= meter_level:
            led_meter[li].value = True
        else:
            led_meter[li].value = False

    # アナログ値を取得して、音が大きいほど255に近い値となるように計算する
    lv = int(adc.value/65535*255)
    pixel_buf = bytearray([lv, lv, lv, lv, lv, lv])
    neopixel_write.neopixel_write(dio18, pixel_buf)

    time.sleep(0.2)

関連情報

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

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

2022年6月3日金曜日

Maker Pi RP2040とCircuitPythonで、Grove Rotary Angle SensorとGrove 7セグメント4桁ディスプレイを接続してセンサー値を表示する

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

〇Maker Pi RP2040と接続したGrove Rotary Angle Sensorと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. code.pyを開いて、以下のプログラムを書き込みます。
Grove Rotary Angle SensorはGrove7コネクタ、Grove 7セグメント4桁ディスプレイはGrove6コネクタに接続します。Grove Rotary Angle Sensorのツマミを動かすと、表示される値も増減します。
※circuit python 7.2.5以降にアップグレードしてから実行してください。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import board
import time
import tm1637
import analogio

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

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

# Grove Rotary Angle SensorをGrove7コネクタに接続します
# Grove7コネクタ -> GP28
adc = analogio.AnalogIn(board.GP28)

while True:
    # アナログ値を取得して0-9999の値に変換
    ra = int(adc.value*9999/65535)
    tm.number(ra)
    time.sleep(0.1)

関連情報

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

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

2022年6月2日木曜日

Maker Pi RP2040とCircuitPythonで、Grove超音波センサーを接続して距離に合わせてLEDメーターを光らせる

Maker Pi RP2040には7つのGroveコネクタがあり、様々なGroveデバイスを接続することが出来ます。Grove超音波センサー(Grove Sound Ranger)を接続して距離に合わせてLEDメーターを光らせるには、以下の手順を実行します。

〇Maker Pi RP2040と接続したGrove Ultrasonic Ranger

実行手順

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

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

3. code.pyを開いて、以下のプログラムを書き込みます。
超音波センサーの距離値を3で割った値を取得して、それに合わせてLEDバーの点灯・消灯をコントロールします。レベルの値が9より大きい場合は9に制限します。
※circuit python 7.2.5以降にアップグレードしてから実行してください。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
iimport board
import time
import digitalio
import grove_ultrasonic_ranger
import neopixel_write

pins = [
  board.GP0,
  board.GP1,
  board.GP2,
  board.GP3,
  board.GP4,
  board.GP5,
  board.GP6,
  board.GP7,
  board.GP16,
  board.GP17,
#  board.GP26,
#  board.GP27,
#  board.GP28,
]

led_meter = []


# ピンの初期化
for pin in pins:
    dio = digitalio.DigitalInOut(pin)
    dio.direction = digitalio.Direction.OUTPUT
    # LEDメーター用配列へ
    led_meter.append(dio)

# 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)

# Connector7にGrove Ultrasonic Sensorを接続
gur = grove_ultrasonic_ranger.GroveUltrasonicRanger(board.GP28, unit=1, timeout=1.5)
distance_level=0
while True:
    try:
        dt = gur.distance
        distance_level = int(dt/3) if int(dt/3) < 10 else 9
    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)

    # LEDバーをレベル値に応じて点灯・消灯
    for li in range(0, 10):
        if li <= distance_level:
            led_meter[li].value = True
        else:
            led_meter[li].value = False
    time.sleep(0.1)

関連情報

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

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

2022年5月28日土曜日

Maker Pi RP2040とCircuitPythonで、Grove光センサーを接続して暗いほど明るくRGB LEDを点灯する

Maker Pi RP2040には7つのGroveコネクタがあり、様々なGroveデバイスを接続することが出来ます。GroveアナログデバイスはGrove5-7コネクタに接続します。Rotary Angle Sensorに応じてLEDバーをメーター表示するには、以下の手順を実行します。

〇Maker Pi RP2040と接続したGrove光センサー

実行手順

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

2. code.pyを開いて、以下のプログラムを書き込みます。 アナログ入力の初期化はanalogio.AnalogInで行います。アナログ値を取得して、暗いほど255に近い値となるように計算した値をRGB LEDに設定して明るさを変えます。
※circuit python 7.2.5以降にアップグレードしてから実行してください。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import board
import time
import digitalio
import analogio
import neopixel_write

# RGB LEDを初期化
dio18 = digitalio.DigitalInOut(board.GP18)
dio18.direction = digitalio.Direction.OUTPUT 


# Groveアナログコネクタと対応するピンは以下になります。
# Grove5コネクタ -> GP26
# Grove6コネクタ -> GP27
# Grove7コネクタ -> GP28
adc = analogio.AnalogIn(board.GP26)

while True:
    # アナログ値を取得して、暗いほど255に近い値となるように計算する
    lv = 255-int(adc.value/65535*255)
    pixel_buf = bytearray([lv, lv, lv, lv, lv, lv])
    neopixel_write.neopixel_write(dio18, pixel_buf)
    time.sleep(0.5)

関連情報

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

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

2022年5月27日金曜日

Maker Pi RP2040とCircuitPythonでPWMを使用して8つのLEDの明るさを徐々に変える

RP2040には8つのPWMがあります。PWMでLEDの明るさを徐々に変えるには、以下の手順を実行します。

〇Maker Pi RP2040でボタンを押下して8つのLEDの明るさを制御した写真

実行手順

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

2. code.pyを開いて、プログラムの書き込み。
Maker Pi RP2040はデフォルトでCircuitPythonが実行できるので、以下のプログラムをcode.pyとしてMu Editorから書き込みます。プログラムをMaker Pi RP2040で保存した後に、GP20ボタンをクリックすると徐々に点灯、GP21ボタンをクリックすると徐々に消灯します。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import board
import time
import pwmio
import math

pins = [
  board.GP0,
  board.GP1,
  board.GP2,
  board.GP3,
  board.GP4,
  board.GP5,
  board.GP6,
  board.GP7,
]

led_meter = []


# ピンの初期化
for pin in pins:
  led = pwmio.PWMOut(pin, duty_cycle=0, frequency=5000)
  led_meter.append(led)

dci = 0
while True:
    # 各LEDのduty_cycleをずらして、徐々に明るさが変化するように設定
    for li in range(8):
      led_meter[li].duty_cycle = int((math.sin(2*math.pi*(dci+30*li)/360)+1)*32767)
    dci=dci+10
    time.sleep(0.1) 

関連情報

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

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

2022年5月24日火曜日

Maker Pi RP2040とCircuitPythonで、Grove Rotary Angleボタンを接続してLEDバーにメーター表示する

Maker Pi RP2040には7つのGroveコネクタがあり、様々なGroveデバイスを接続することが出来ます。GroveアナログデバイスはGrove5-7コネクタに接続します。Rotary Angle Sensorに応じてLEDバーをメーター表示するには、以下の手順を実行します。

〇Maker Pi RP2040と接続したGrove Rotary Angle Sensor

実行手順

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

2. code.pyを開いて、以下のプログラムを書き込みます。
アナログ入力の初期化はanalogio.AnalogInで行います。LEDバー表示のためにLED0-LED7,LED16,LED17の10個のLEDを使用します。
※circuit python 7.2.5以降にアップグレードしてから実行してください。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import board
import time
import digitalio
import analogio

pins = [
  board.GP0,
  board.GP1,
  board.GP2,
  board.GP3,
  board.GP4,
  board.GP5,
  board.GP6,
  board.GP7,
  board.GP16,
  board.GP17,
#  board.GP26,
#  board.GP27,
#  board.GP28,
]

led_meter = []


# ピンの初期化
for pin in pins:
    dio = digitalio.DigitalInOut(pin)
    dio.direction = digitalio.Direction.OUTPUT
    # LEDメーター用配列へ
    led_meter.append(dio)

# Groveアナログコネクタと対応するピンは以下になります。
# Grove5コネクタ -> GP26
# Grove6コネクタ -> GP27
# Grove7コネクタ -> GP28
adc = analogio.AnalogIn(board.GP26)

while True:
    # アナログ値を取得して0-9のレベル値
    meter_level = int(adc.value/65536*10)
    # LEDバーをレベル値に応じて点灯・消灯
    for li in range(0, 10):
        if li <= meter_level:
            led_meter[li].value = True
        else:
            led_meter[li].value = False
    time.sleep(0.2)

関連情報

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

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

2022年5月19日木曜日

Maker Pi RP2040とCircuitPythonで、ボタンクリック時にMP3をピエゾスピーカーから再生する

Maker Pi RP2040には多数のLEDや、DCモータードライバ、ピエゾ圧電スピーカーなど多数の機能を搭載されています。ボタンクリック時にMP3をピエゾスピーカーから再生するには、以下の手順を実行します。

〇Maker Pi RP2040でMP3をピエゾスピーカーから再生中の写真

実行手順

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

2. エクスプローラーなどで、Maker Pi RP2040のドライブのルートフォルダに再生したいmp3ファイルをコピーします。

3. code.pyを開いて、以下のプログラムを書き込みます。
以下のプログラムでは、good_morning.mp3という名前のmp3ファイルをデコードしてPWMAudioOutを使用して再生しています。mp3を再生中はGP0のLEDが光ります。
※circuit python 7.2.5にアップグレードしてから実行(工場出荷時は7.0.0-alpha.2とかが入っていて正常に再生できません)してください。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import board
import audiopwmio
import audiomp3
import digitalio
import time

# mp3ファイルを読み込む
data = open("/good_morning.mp3", "rb")
mp3 = audiomp3.MP3Decoder(data)
# ピエゾスピーカーを出力先に指定
aio = audiopwmio.PWMAudioOut(board.GP22)

# GP20ボタンの初期化
dio20 = digitalio.DigitalInOut(board.GP20)
dio20.direction = digitalio.Direction.INPUT
dio20.pull = digitalio.Pull.UP

# 再生途中を示すLED
dio0 = digitalio.DigitalInOut(board.GP0)
dio0.direction = digitalio.Direction.OUTPUT

while True:
    # 再生していない時にボタンを押されたら再生開始
    if dio20.value == False:
        if not aio.playing:
            aio.play(mp3)
    # 再生中はGP0のLEDを点灯する
    if aio.playing:
        dio0.value = True
    else:
        dio0.value = False
    time.sleep(0.1)

関連情報

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

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

2022年5月17日火曜日

Maker Pi RP2040とCircuitPythonで、Groveボタンを接続してRGB LEDを制御する

Maker Pi RP2040には7つのGroveコネクタがあり、様々なGroveデバイスを接続することが出来ます。Maker Pi RP2040とCircuitPythonで、Groveボタンを接続してRGB LEDを制御するには、以下の手順を実行します。

〇Maker Pi RP2040と接続したGroveボタン

実行手順

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

2. code.pyを開いて、以下のプログラムを書き込みます。
neopixel_writeモジュールでRGB LEDの制御を行うことが出来ます。ピンはGP18を使用します。
バッファは[G1, R1, B1, G2, R2, B2]というように形式で指定することで2つのLEDを別個に制御出来ます。
※circuit python 7.2.5にアップグレードしてから実行してください。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import board
import neopixel_write
import digitalio
import time

# RGB LEDを初期化
dio18 = digitalio.DigitalInOut(board.GP18)
dio18.direction = digitalio.Direction.OUTPUT

# Grove1コネクタに接続したボタンの初期化
# Groveボタンの場合 : 各Groveコネクタに対応するピンは以下です
# Grove1 -> GP1
# Grove2 -> GP3
# Grove3 -> GP5
# Grove4 -> GP17
# Grove5 -> GP26
# Grove6 -> GP27
# Grove7 -> GP28
dio1 = digitalio.DigitalInOut(board.GP1)
dio1.direction = digitalio.Direction.INPUT

while True:
    if dio1.value == True:
        # GP1のボタンを押している間は2つのRGBLEDを赤と黄色で点灯
        pixel_buf = bytearray([0, 128, 0, 128, 128, 0])
        neopixel_write.neopixel_write(dio18, pixel_buf)
    else:
        # ボタンを押していない間は消灯
        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に関する他の情報はこちらを参照してください。

2022年5月11日水曜日

Maker Pi RP2040とCircuitPythonで、RGB LEDを制御する

Maker Pi RP2040には多数のLEDや、DCモータードライバ、ピエゾ圧電スピーカーなど多数の機能を搭載されています。Maker Pi RP2040とCircuitPythonで、RGB LEDを制御するには、以下の手順を実行します。

〇Maker Pi RP2040のRGB LEDを青色と緑色に点灯した状態の写真

実行手順

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

2. code.pyを開いて、以下のプログラムを書き込みます。
neopixel_writeモジュールでRGB LEDの制御を行うことが出来ます。ピンはGP18を使用します。
バッファは[G1, R1, B1, G2, R2, B2]というように形式で指定することで2つのLEDを別個に制御出来ます。
※circuit python 7.2.5にアップグレードしてから実行してください。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import board
import neopixel_write
import digitalio
import time

# RGB LEDを初期化
dio18 = digitalio.DigitalInOut(board.GP18)
dio18.direction = digitalio.Direction.OUTPUT

# GP20ボタンの初期化
dio20 = digitalio.DigitalInOut(board.GP20)
dio20.direction = digitalio.Direction.INPUT
dio20.pull = digitalio.Pull.UP

while True:
    if dio20.value == False:
        # GP20のボタンを押している間は2つのRGB LEDを白色で点灯
        pixel_buf = bytearray([255, 255, 255, 255, 255, 255])
        neopixel_write.neopixel_write(dio18, pixel_buf)
    else:
        # USB端子側のRGB LEDを青、反対側を緑に点灯
        pixel_buf = bytearray([0, 0, 128, 128, 0, 0])
        neopixel_write.neopixel_write(dio18, pixel_buf)
    time.sleep(0.1)

関連情報

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

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

2022年5月9日月曜日

Maker Pi RP2040とCircuitPythonでボタンクリック時にLEDバーを点灯・消灯する

Maker Pi RP2040には多数のLEDや、DCモータードライバ、ピエゾ圧電スピーカーなど多数の機能を搭載されています。ボタンクリック時にLEDバーを点灯・消灯するには、以下の手順を実行します。

〇Maker Pi RP2040でボタンを押下してLEDバーを点灯させた写真

実行手順

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

2. code.pyを開いて、プログラムの書き込み。
Maker Pi RP2040はデフォルトでCircuitPythonが実行できるので、以下のプログラムをcode.pyとしてMu Editorから書き込みます。プログラムをMaker Pi RP2040で保存した後に、GP20ボタンをクリックすると徐々に点灯、GP21ボタンをクリックすると徐々に消灯します。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import board
import time
import digitalio

pins = [
  board.GP0,
  board.GP1,
  board.GP2,
  board.GP3,
  board.GP4,
  board.GP5,
  board.GP6,
  board.GP7,
  board.GP16,
  board.GP17,
  board.GP26,
  board.GP27,
  board.GP28,
]

dio_leds = []


# ピンの初期化
for pin in pins:
    dio = digitalio.DigitalInOut(pin)
    dio.direction = digitalio.Direction.OUTPUT
    dio_leds.append(dio)

# GP20ボタンの初期化
dio20 = digitalio.DigitalInOut(board.GP20)
dio20.direction = digitalio.Direction.INPUT
dio20.pull = digitalio.Pull.UP

# GP21ボタンの初期化
dio21 = digitalio.DigitalInOut(board.GP21)
dio21.direction = digitalio.Direction.INPUT
dio21.pull = digitalio.Pull.UP

while True:
    # GP20ボタンが押されたらLEDバーを徐々に点灯
    if dio20.value == False:
        for li in range(0, len(dio_leds)):
            dio_leds[li].value = True
            time.sleep(0.1)
    # GP21ボタンが押されたらLEDバーを徐々に点灯
    if dio21.value == False:
        for li in range(len(dio_leds)-1, -1, -1):
            dio_leds[li].value = False
            time.sleep(0.1)
    time.sleep(0.1)

関連情報

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

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

2022年5月8日日曜日

Maker Pi RP2040とCircuitPythonでLEDバーを左右に往復点灯させる

Maker Pi RP2040には多数のLEDや、DCモータードライバ、ピエゾ圧電スピーカーなど多数の機能を搭載されています。ボード中央のLEDバーを左右に往復点灯させるには、以下の手順を実行します。

〇Maker Pi RP2040でLEDバーを点灯させた写真

実行手順

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

2. code.pyを開いて、プログラムの書き込み。
Maker Pi RP2040はデフォルトでCircuitPythonが実行できるので、以下のプログラムをcode.pyとしてMu Editorから書き込みます。プログラムをMaker Pi RP2040で保存すると基盤中央のLEDバーが左右に往復点灯します。
※Mu Editorを使用せず、code.pyを直接エクスプローラーなどから保存する事も出来ます。
import board
import time
import digitalio

pins = [
  board.GP0,
  board.GP1,
  board.GP2,
  board.GP3,
  board.GP4,
  board.GP5,
  board.GP6,
  board.GP7,
  board.GP16,
  board.GP17,
  board.GP26,
  board.GP27,
  board.GP28,
]
led_animation = []


# ピンの初期化
for pin in pins:
    dio = digitalio.DigitalInOut(pin)
    dio.direction = digitalio.Direction.OUTPUT
    # アニメーション配列へ
    led_animation.append(dio)


while True:
    # 左から右へ
    for ci in range(0, len(led_animation)-1):
        for ai in range(0, len(led_animation)):
            if ai != ci:
                led_animation[ai].value = False
            else:
                led_animation[ai].value = True
        time.sleep(0.1)
    # 右から左へ
    for ci in range(len(led_animation)-1, 0, -1):
        for ai in range(0, len(led_animation)):
            if ai != ci:
                led_animation[ai].value = False
            else:
                led_animation[ai].value = True
        time.sleep(0.1)

関連情報

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

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