注釈
こんにちは、FacebookでSunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Communityへようこそ!Raspberry Pi、Arduino、ESP32の深い探求を仲間と共に楽しみましょう。
なぜ参加するのか?
専門的なサポート: コミュニティやチームからの助けを借りて、購入後の問題や技術的な挑戦を解決します。
学びと共有: ヒントやチュートリアルを交換して、技術を磨きましょう。
独占的なプレビュー: 新製品の発表や先取り情報を早期にアクセスしましょう。
特別割引: 最新製品の独占的な割引を楽しみましょう。
祭りのプロモーションとギブアウェイ: ギブアウェイや祝祭のプロモーションに参加しましょう。
👉 私たちと一緒に探索し、創造しませんか?[ここ]をクリックして、今日参加しましょう!
3.2 パッシブブザーでカスタムトーンを再生
このレッスンでは、Raspberry Pi Pico 2 Wを使用して パッシブブザー で異なるトーンや簡単なメロディーを再生する方法を学びます!アクティブブザーとは異なり、パッシブブザーは音を生成するために変化する電気信号を必要とし、信号の周波数を変えることで音のピッチを制御できます。
必要な部品
このプロジェクトに必要な部品は以下の通りです。
全ての部品がセットになったキットを購入するのが便利です。こちらのリンクをご覧ください:
名前 |
このキットのアイテム |
リンク |
|---|---|---|
Pico 2 Wスターターキット |
450+ |
また、以下のリンクから部品を個別に購入することもできます。
SN |
コンポーネント |
数量 |
リンク |
|---|---|---|---|
1 |
1 |
||
2 |
マイクロUSBケーブル |
1 |
|
3 |
1 |
||
4 |
数本 |
||
5 |
1(S8050) |
||
6 |
1(1KΩ) |
||
7 |
パッシブ ブザー |
1 |
パッシブブザーの理解
パッシブブザーは小型スピーカーのように機能します。自身で音を発することはなく、音を出すためには振動する信号が必要です。異なる周波数の信号を提供することで、ブザーから異なるピッチの音を出すことができ、音符やメロディーを演奏できます。
回路図

この回路では、パッシブブザーはトランジスタ( S8050 NPN)を通じて電源が供給されます。トランジスタは電流を増幅し、Picoに直接接続されている場合よりもブザーの音を大きくします。
ここでの流れは以下の通りです:
GP15 が高信号を出力してトランジスタを制御します。
トランジスタが作動すると、ブザーを通じて電流が流れ、ブザーが鳴ります。
1kΩの抵抗 は、トランジスタを保護するために電流を制限します。
配線図
パッシブブザー を使用していることを確認してください。裸のPCBが見えるものが正しいブザーです(アクティブブザーは裏面が封印されています)。
コードの記述
それでは、異なるトーンを再生するためのコードを書いてみましょう。
注釈
pico-2w-kit-main/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) # 500msのA4ノート
utime.sleep_ms(200)
play_tone(494, 500) # 500msのB4ノート
utime.sleep_ms(200)
play_tone(523, 500) # 500msのC5ノート
このコードが実行されると、パッシブブザーはそれぞれ500ミリ秒でA4、B4、C5の音符を演奏します。 コードを実行すると、パッシブブザーがそれぞれ500ms間、A4ノート、B4ノート、C5ノートを再生します。
コードの説明
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ミリ秒持続し、音符の間に短い休止があります。ブザーはミドルC(C4)から次のオクターブのC(C5)まで、上昇するスケールを再生します。
さらに実験する
自分だけのメロディーを作成する: メロディーと
note_durationsリストの音符と持続時間を変更して、自分の曲を作成しましょう。テンポを調整する:
note_durationsの値を変更して、メロディーの速さを調整できます。音符を追加する: 音符の周波数を定義し、メロディーに追加して、より多くの音符を使ってみましょう。
音量を調整する:
buzzer.duty_u16()でデューティサイクルを調整し、ブザーの音量を大きくしたり小さくしたりできます。32768の値は50%のデューティサイクルです。
結論
このレッスンでは、Raspberry Pi Pico 2 Wを使ってパッシブブザーでトーンやメロディーを再生する方法を学びました。PWM信号の周波数を制御することで、さまざまな音を作り、シンプルな曲まで演奏できるようになります。これは、プロジェクトに音声フィードバックや楽しい音楽要素を加える素晴らしい方法です。

