Arduinoからパルス信号出力で圧電ブザーを奏でる
Arduino+圧電ブザーで電子ピアノ!
今回は Arduino から音階に合った周波数信号を出力し、圧電ブザーで音を奏でてみます。
Arduinoの導入については前回記事を参照してください:
👉 【Arduino入門】開発環境の準備とLED点滅でHello World!
🎵 使用するもの
- Arduino UNO
- 圧電ブザー ×1
- タクトスイッチ ×8
- カーボン抵抗330Ω ×8
- LED ×8
- ジャンパー線 ×複数

buzzer parts
🔍 音を鳴らすだけなら LED と抵抗は不要。視覚フィードバック用に使っています。
LEDで光る方がテンション上がるのでお薦めです!
🔧 圧電ブザーの仕組みと回路
圧電ブザーは、電圧で伸び縮みする圧電セラミックが金属板を振動させて音を鳴らします。
圧電セラミックスは電気を流すことで伸縮します。
圧電セラミックスが伸びることで、金属板も同調して伸び、その時に「パキッ」っていう音が発生します。
電気のON・OFFを高速で繰り返すことで、繰り返し周波数に応じた音階の音が発生します。

圧電ブザーの仕組み
そのため、Arduinoから出力する信号は、音階の周波数に合わせたパルス信号を出すことで圧電ブザーからは綺麗な音が発生します。
回路図:

ブザー回路図
D3ピンからD10ピンはタクトスイッチの入力の読み込みに使用します。
どのスイッチを押されたかを判別するためですね。
この時、通電確認とどのスイッチが押されたかを押されたのかを確認するためにLEDと抵抗を設置しています。
LEDは無くても音は鳴りますので、いらなければ省いてください。
電源はArduinoから出力される5Vを使用しています。
LEDの抵抗値計算は過去の記事を参照してください。
ブレッドボード例:

circuit
💻 プログラムコード(tone関数)
void setup()
{
for(int i=3; i<=10; i++) {
pinMode(i, INPUT);
digitalWrite(i, HIGH); // プルアップ
}
}
void loop()
{
int t = 0;
if(digitalRead(3)==LOW) t=523; // ド
if(digitalRead(4)==LOW) t=587; // レ
if(digitalRead(5)==LOW) t=659; // ミ
if(digitalRead(6)==LOW) t=698; // ファ
if(digitalRead(7)==LOW) t=784; // ソ
if(digitalRead(8)==LOW) t=880; // ラ
if(digitalRead(9)==LOW) t=988; // シ
if(digitalRead(10)==LOW) t=1046;// ド(高)
if (t != 0) tone(2, t);
else noTone(2);
}
1~7行目で3ピン~10ピンのセットアップを行っています。
3~10ピンはボタン入力信号を読み込む為に使用するため、入力ポートに設定します。
その時、入力ポートは内部プルアップしておきます。
各ピンの入力をチェックして、対応する周波数を tone()
関数で出力します。
プログラム内にある変数tは発生させるパルス信号の周波数となっています。
押されていない場合は noTone()
で無音にします。
tone_link = “\n🔗 Arduino tone() リファレンス » <https://www.arduino.cc/reference/en/language/functions/advanced-io/tone/”
🎼 音階の周波数表(Hz)
※ 1行目:中央ドの1オクターブ下、2行目:中央ド、3行目:中央ドの1オクターブ上
ド | レ | ミ | ファ | ソ | ラ | シ |
---|---|---|---|---|---|---|
261.6 | 293.7 | 329.6 | 349.2 | 392.0 | 440.0 | 493.9 |
523.3 | 587.3 | 659.3 | 698.5 | 784.0 | 880.0 | 987.8 |
1046.5 | 1174.7 | 1318.5 | 1396.9 | 1568.0 | 1760.6 | 1975.5 |
🧪 実験!回路を実際に組んで、電子ピアノを弾いてみた
回路を実際にブレッドボード上に組んでみました
電子ピアノ回路
配線がちょっと多くて見づらいですが、きちんと基板にはんだ付けしたらすっきりすると思います。
実際に動作させてみましょう。実際に電子ピアノで「ドレミの歌」を弾いた動画です。
📺 演奏動画(ドレミの歌):
🎁 おまけ:Arduinoに「パプリカ」を奏でさせてみた
tone()
関数を使って、メロディを自動演奏!
📺 演奏動画(パプリカ):
この、8bitサウンド感が好きな方は好きなのではないのでしょうか?このようなこともできるよっていう紹介でした。
🧠 まとめ
- 圧電ブザーはパルスで音を鳴らす
- tone関数で任意の音階を生成可能
- Arduinoで音楽も作れる!
ボタンを追加すれば #音 やオクターブも増やせます。
いろんなセンサやスイッチを加えることで無限の拡張性を秘めているのがマイコンでありArduinoです。
この記事を読まれた方もどんどん開発していって電子工作ライフを楽しみましょう。
想像力しだいで電子工作の可能性は無限です!
See you…