注釈
こんにちは、FacebookのSunFounder Raspberry Pi & Arduino & ESP32愛好者コミュニティへようこそ!Raspberry Pi、Arduino、ESP32について、他の愛好者と共にさらに深く学びましょう。
参加する理由
専門家のサポート: 購入後の問題や技術的な課題を、コミュニティやチームのサポートを通じて解決できます。
学びと共有: ヒントやチュートリアルを交換し、スキルを向上させましょう。
独占プレビュー: 新製品の発表や先行情報にいち早くアクセスできます。
特別割引: 最新製品に対する独占的な割引を楽しめます。
祝祭のプロモーションやギブアウェイ: ギブアウェイや祝祭のプロモーションに参加できます。
👉 一緒に探求し、創造しませんか?今すぐ [こちら] をクリックして参加しましょう!
3.2 パッシブ・ブザーでカスタム音を再生する
このレッスンでは、Raspberry Pi Pico 2を使用して パッシブ・ブザー を操作し、さまざまな音を再生したり、簡単なメロディーを演奏する方法を学びます!アクティブ・ブザーとは異なり、パッシブ・ブザーは音を出すために変化する電気信号を必要とし、その信号の周波数を変更することで音の高さを制御できます。
必要なもの
このプロジェクトには、以下のコンポーネントが必要です。
全体キットを購入するのが便利です。リンクはこちら:
名称 |
セット内容 |
リンク |
|---|---|---|
Newton Lab Kit |
450+ |
個別に購入することもできます。
SN |
コンポーネント |
数量 |
リンク |
|---|---|---|---|
1 |
1 |
||
2 |
Micro USBケーブル |
1 |
|
3 |
1 |
||
4 |
数本 |
||
5 |
1(S8050) |
||
6 |
1(1KΩ) |
||
7 |
パッシブ ブザー |
1 |
パッシブ・ブザーの仕組み
パッシブ・ブザーは小さなスピーカーのように動作します。自分で音を出すことはなく、音を出すためには振動信号が必要です。異なる周波数の信号を供給することにより、ブザーは異なる音高を発生させることができ、これによって音符やメロディーを再生することができます。
回路図

この回路では、パッシブ・ブザーはトランジスタ( S8050 NPN)を介して電力供給されます。トランジスタは電流を増幅し、Picoに直接接続した場合よりもブザーの音量を大きくします。
動作は以下の通りです:
GP15 が高信号を出力し、トランジスタを制御します。
トランジスタが活性化されると、電流がブザーを通じて流れ、音を鳴らします。
1kΩの抵抗 は、トランジスタを保護するために電流を制限します。
配線図
パッシブ・ブザー を使用していることを確認してください。正しいものかどうかは、基板が露出しているかどうかで判断できます(背面が封印されているのはアクティブ・ブザーです)。
コードの作成
次に、ブザーで異なる音を再生するコードを書いてみましょう。
注釈
newton-lab-kit/micropythonから3.2_custom_tone.pyを開くか、コードをThonnyにコピーして「実行」ボタンをクリックするか、F5キーを押して実行します。正しいインタープリタ(MicroPython (Raspberry Pi Pico).COMxx)が選択されていることを確認してください。
import machine
import utime
# GP15でPWMを初期化
buzzer = machine.PWM(machine.Pin(15))
def play_tone(frequency, duration):
# PWM信号の周波数を設定
buzzer.freq(frequency)
# デューティサイクルを50%に設定
buzzer.duty_u16(32768)
# 指定された期間だけ音を鳴らす
utime.sleep_ms(duration)
# ブザーを停止
buzzer.duty_u16(0)
# 音をいくつか再生
play_tone(440, 500) # A4音を500ms再生
utime.sleep_ms(200)
play_tone(494, 500) # B4音を500ms再生
utime.sleep_ms(200)
play_tone(523, 500) # C5音を500ms再生
このコードが実行されると、パッシブ・ブザーがA4音を500ms、B4音を500ms、C5音を500msの順に再生します。
コードの説明
PWMの初期化:
buzzer = machine.PWM(machine.Pin(15)): GP15ピンでPWM(パルス幅変調)を設定し、これを使ってブザーを制御します。
play_tone関数の定義:def play_tone(frequency, duration): buzzer.freq(frequency) buzzer.duty_u16(32768) utime.sleep_ms(duration) buzzer.duty_u16(0)
frequency: 音の高さ(周波数)。周波数が高いほど高い音になります。duration: 音が鳴る時間(ミリ秒)。buzzer.duty_u16(32768): デューティサイクルを50%に設定(65535の半分)。再生が終了したら、デューティサイクルを0にしてブザーを停止します。
音符の再生:
異なる周波数の音符を再生するために、
play_toneを呼び出します。# 音をいくつか再生 play_tone(440, 500) # A4音を500ms再生 utime.sleep_ms(200) play_tone(494, 500) # B4音を500ms再生 utime.sleep_ms(200) play_tone(523, 500) # C5音を500ms再生
メロディーを演奏してみよう
個々の音符を再生する方法を学んだので、次に簡単なメロディーを作成してみましょう!これにより、音符を順番に並べてその持続時間を調整することで、音楽を作成する方法を理解できます。
import machine
import utime
# 音符の周波数(Hz)
NOTE_C4 = 262
NOTE_D4 = 294
NOTE_E4 = 330
NOTE_F4 = 349
NOTE_G4 = 392
NOTE_A4 = 440
NOTE_B4 = 494
NOTE_C5 = 523
melody = [
NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4,
NOTE_G4, NOTE_A4, NOTE_B4, NOTE_C5
]
note_durations = [
500, 500, 500, 500,
500, 500, 500, 500
]
# GP15でPWMを初期化
buzzer = machine.PWM(machine.Pin(15))
def play_tone(frequency, duration):
buzzer.freq(frequency)
buzzer.duty_u16(32768)
utime.sleep_ms(duration)
buzzer.duty_u16(0)
utime.sleep_ms(50) # 音符の間に短い間隔を置く
for i in range(len(melody)):
play_tone(melody[i], note_durations[i])
このコードを実行すると、ブザーはメロディーを演奏し、各音符が500ミリ秒間鳴り、音符の間には短い間隔があります。ブザーはC4(中のC)からC5(次のオクターブのC)までの昇順のスケールを演奏します。
さらに実験してみよう
自分のメロディーを作成: メロディーと
note_durationsのリスト内の音符とその持続時間を変更して、自分の曲を作成しましょう。テンポの調整:
note_durationsの値を変更してメロディーの速さを調整します。音符を追加: 新しい音符を定義し、その周波数をメロディーに追加します。
音量を変更:
buzzer.duty_u16()のデューティサイクルを調整して、ブザーの音量を大きくしたり小さくしたりできます。32768は50%のデューティサイクルに相当します。
結論
このレッスンでは、パッシブ・ブザーを使用して音符やメロディーを再生する方法を学びました。PWM信号の周波数を制御することで、さまざまな音を作成したり、簡単な曲を演奏したりすることができます。これを活用すれば、プロジェクトに音でのフィードバックや楽しい音楽要素を加えることができます。

