1. 今日やること
- ブザー(スピーカーの祖先) を配線する
- Picoから音(周波数) を出す
- ドレミ を演奏する
スポンサーリンク(開発中はプレースホルダー)
2. 使う部品
- Raspberry Pi Pico H / ブレッドボード
- パッシブブザー ×1
- ※「アクティブ」ではなく「パッシブ」を使います(裏側が緑色の基板剥き出しのやつが多い)。
- ジャンパーワイヤ ×2本
3. 完成形(今日のゴール)
「ド〜レ〜ミ〜」と音階が鳴ります。 光(LED)だけでなく、音という新しい表現力を手に入れます。
4. 手順
Step 1: ブザーを配線する
ブザーにも極性(プラス・マイナス)があるものと、ないものがあります。 表面に「+」シールがあれば、そちらをプラスにします。
- ブザーをブレッドボードに挿す。
- プラス側(または片方の足) → GP15
- マイナス側(もう片方の足) → GND
Step 2: 音の正体(PWM)
音は「空気の振動」です。 Picoの電気を高速で「ON/OFF/ON/OFF...」と震わせることで、ブザーの膜を振動させます。 この高速振動を作る技を PWM(パルス・ウィズ・モジュレーション) と呼びます。
5. コード
# GP15ピンでPWM(振動)を使います
buzzer = machine.PWM(machine.Pin(15))
# 音の周波数(高さ)を決める関数
def tone(frequency, duration):
buzzer.freq(frequency) # 振動数(Hz)を設定
buzzer.duty_u16(3000) # 音量(ONの時間比率)
time.sleep(duration) # 鳴らす時間
buzzer.duty_u16(0) # 音を止める(音量0)
# ドレミファソラシドの周波数
do = 523
re = 587
mi = 659
# 演奏開始
while True:
tone(do, 0.5)
tone(re, 0.5)
tone(mi, 0.5)
time.sleep(1)
6. つまずきログ
⚠️ 音が「ピー」と鳴りっぱなし / 音程が変わらない
- 原因: ブザーが「アクティブブザー」かも?
- → 電池を繋ぐだけで「ピー」と鳴るのが「アクティブブザー」。これだとプログラムで音程を変えられません。
- → 「パッシブブザー(自分では鳴れない)」を使う必要があります。キットの中を探してみてください(見た目が似てるので注意)。
7. 文系への翻訳
- 周波数 (Hz): 1秒間に何回震えるか。「高さ」が決まる。
- Duty比: 1回の振動の中で、どれくらい力んでいるか。「音量」や「明るさ」が変わる。
- 関数 (def): よく使う「一連の動作」に名前をつけて、いつでも呼び出せるようにした魔法の呪文。ここでは
tone()という呪文を作りました。
8. 今日の達成
「電子機器に『声』を与えた!」
9. 次へ
デジタル(0と1)の世界から、少しはみ出してみましょう。 次は「つまみ」を回して、0と1の間にある「曖昧な数値」を扱います。