micro:bit用ピアノモジュールを接続する

2025年9月14日日曜日

マイコン工作

https://notyet-maker.blogspot.com/2025/08/blog-post_15.html

で選定したピアノモジュールが届いた。


https://notyet-maker.blogspot.com/2025/09/blog-post_5.html

で選定したケーブルを接続する。


が、

micro:bit用ピアノモジュールに付属のハーネス と、3ピン メス JST ケーブル シャープ距離センサー用 のピン配が違っていた〜。

これで、結構、時間くった...



https://switch-education.com/products/microbit-zh-piano/

に、サンプルプログラムがあったので、これを参考に、各キーが検出できるかどうかを確認した。


ChatGPTで生成したREPLのコードはこちら。


import time, sys
import board, analogio, supervisor

# --- 前回のA1を解放 ---
_prev = globals().get("ain", None)
if _prev:
    try:
        _prev.deinit()
    except Exception:
        pass
    finally:
        globals().pop("ain", None)

# --- 設定 ---
READ_INTERVAL = 0.05
ain = analogio.AnalogIn(board.A1)

# micro:bit の 0〜1023 スケールに合わせる関数
def to_10bit(val):
    return val * 1023 // 65535

# 鍵盤マップ(しきい値上限, ラベル)
KEYS = [
    (40,  "C4"),
    (130, "C#4"),
    (220, "D4"),
    (300, "D#4"),
    (390, "E4"),
    (470, "F4"),
    (560, "F#4"),
    (640, "G4"),
    (720, "G#4"),
    (810, "A4"),
    (890, "A#4"),
    (950, "B4"),
]

def get_key(v10bit):
    for limit, name in KEYS:
        if v10bit < limit:
            return name
    return None

last = None

try:
    while True:
        raw = ain.value
        v10 = to_10bit(raw)
        key = get_key(v10)

        if key != last:
            if key:
                print(f"{key} ({v10})")
            else:
                print("STOP")
            last = key

        time.sleep(READ_INTERVAL)

        if supervisor.runtime.serial_bytes_available:
            _ = sys.stdin.read(1)
            print("break")
            break

except KeyboardInterrupt:
    print("KeyboardInterrupt")

finally:
    try:
        ain.deinit()
        print("A1 released")
    except:
        pass


ChatGPTがエラーばっかり出すから、すごく時間がかかったけど、検出できた〜。


---

<AnalogIn>

B4 (930)

STOP

A4 (765)

STOP

G4 (596)

STOP

F4 (428)

STOP

E4 (343)

STOP

D4 (172)

STOP

C4 (1)

STOP

C#4 (87)

STOP

D#4 (260)

STOP

F#4 (514)

STOP

G#4 (681)

STOP

A#4 (852)

STOP

KeyboardInterrupt

A1 released

---


次は、その他の部品を全て購入して、スピーカー周りから動作確認していこうと思う。


このブログを検索

ブログ アーカイブ

幼少期からの浅い呼吸の改善

https://notyet-maker.blogspot.com/2025/11/14.html に関連。 ChatGPTから、横隔膜の動きを良くするなら胸部の弛緩だ、との回答があり、胸部に触れてから寝てみたら、胸あたりが重くなってHRVが急激に下がってしまった。 おそらく、...

QooQ