부저(Buzzer)

概要
ブザー(Buzzer)は音を発生させる装置で、Arduinoのようなマイクロコントローラーボードと組み合わせて使用され、さまざまなプロジェクトで警告音、通知音、音楽などを再生するために使用されます。ブザーは主にアクティブブザー(Active Buzzer)とパッシブブザー(Passive Buzzer)に分けられます。
アクティブブザーとパッシブブザー
アクティブブザー(Active Buzzer)
アクティブブザーは内部に発振回路が内蔵されており、電源を供給するだけで自動的に音を鳴らします。制御が簡単で、主に一定の周波数(音の高さを変えず一種類)の音を出すのに使用されます。
- 簡単な制御:単に電源をオン・オフするだけで音が出ます。
- 一定の周波数:特定の周波数の音のみを発生させます。
パッシブブザー(Passive Buzzer)
パッシブブザーは、電源を供給しても自動的には音が出ません。PWM(Pulse Width Modulation)信号を使用して周波数を制御することで、さまざまな周波数の音を生成できます。メロディや多様な音を再生するのに便利です。
- 複雑な制御:外部回路またはソフトウェアで周波数を制御する必要があります。
- 多様な周波数:さまざまな周波数の音を発生させることができます。
アクティブブザーとパッシブブザーの識別
アクティブブザーとパッシブブザーは外見では区別が難しい場合があります。簡単なテストで識別する方法があります。
1. ラベルとマーキング
外観による識別方法ですが、製品によって表示が異なるため確実とは限りません。
- アクティブブザー:「Active」や特定の周波数(例:「5V 12kHz」)と表示されていることがあります。
- パッシブブザー:「Passive」または周波数表示のないことが多いです。
2. テスト
最も確実な方法は、簡単な回路を組んでテストすることです。
- アクティブブザー:電源を接続するとすぐに音が出ます。
- パッシブブザー:電源を接続しても音が出ず、周波数信号を入力すると音が出ます。
回路構成
製品によってブザーの形状は異なりますが、原理は同じです。
ピンが2本の場合
- ブザーの+端子をArduinoのデジタルピンに接続します。
- ブザーの-端子をArduinoのGNDに接続します。

ピンが3本の場合
- ブザーの+端子(またはVCC)をArduinoの5Vピンに接続します。
- ブザーの-端子をArduinoのGNDに接続します。
- ブザーの信号ピンをArduinoの任意のデジタルピンに接続します。
※ 下の写真と異なるモデルの場合、ピンの位置が異なることがありますので、よく確認して接続してください。

活用例
1. アクティブブザーの制御
アクティブブザーを3回鳴らす例です。
1-1. 回路構成
下の写真は3ピンタイプの例です。2ピンタイプを使用する場合は、上記のハードウェア接続を参考にしてください。

1-2. コード
const int iopin = 7;
void setup() {
pinMode(iopin, OUTPUT);
digitalWrite(iopin, HIGH);
for (int i = 0; i < 3; i++) {
digitalWrite(iopin, LOW);
delay(500);
digitalWrite(iopin, HIGH);
delay(500);
}
}
void loop() {
delay(10);
}
1-3. 実行結果
2. アクティブブザーとタクトスイッチの組み合わせ
タクトスイッチを押すとアクティブブザーが音を鳴らす例です。
2-1. 回路構成
この例では、タクトスイッチにINPUT_PULLUP抵抗を使用しています。
PULLUP、PULLDOWN、INPUT_PULLUP抵抗についての詳細は、タクトスイッチのページをご覧ください。

2-2. コード
#define buzzer 6
#define btn 12
void setup() {
pinMode(buzzer, OUTPUT);
pinMode(btn, INPUT_PULLUP);
}
void loop() {
if (!digitalRead(btn)) {
for (int i = 0; i < 6; i++) {
digitalWrite(buzzer, !digitalRead(buzzer));
delay(100);
}
}
delay(10);
}
2-3. 実行結果
3. パッシブブザーで音階を再生
パッシブブザーは、アクティブブザーとは異なり、周波数を制御して異なる音を表現できます。
「ドレミファソラシド」の音階を順に再生する例です。
参考資料:オクターブおよび音階ごとの標準周波数

3-1. 回路構成
ハードウェア接続の回路を参考にしてください。
3-2. コード
#define buzzer 11
int numTones = 8;
double tones[] = { 261.6256, 293.6648, 329.6276, 349.2282, 391.9954, 440, 493.8833, 523.2511 };
int cnt = 0;
void setup()
{
}
void loop()
{
if (cnt == 0)
{
for (int i = 0; i < numTones; i++)
{
tone(buzzer, tones[i]);
delay(500);
}
noTone(buzzer);
delay(500);
cnt++;
}
}
3-3. 実行結果
4. パッシブブザーでメロディを再生
パッシブブザーで簡単なメロディを再生する例です。
この例を基に、他のメロディにも応用可能です。
4-1. 回路構成
ハードウェア接続の回路を参考にしてください。
4-2. コード
#define buzzer 11
int numTones = 8;
double g_tones[] = { 195.9977, 220, 246.9417, 261.6256, 293.6648, 329.6276, 349.2282, 391.9954 };
int cnt = 0;
void setup()
{
}
void loop()
{
if (cnt == 0)
{
tone(buzzer, g_tones[0]);
delay(500);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(500);
noTone(buzzer);
tone(buzzer, g_tones[2]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[4]);
delay(500);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[4]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[5]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[5]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[6]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[5]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[1]);
delay(500);
noTone(buzzer);
tone(buzzer, g_tones[4]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[4]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(500);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[2]);
delay(500);
noTone(buzzer);
tone(buzzer, g_tones[1]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[2]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(1000);
noTone(buzzer);
cnt++;
}
else
{
}
}
4-3. 実行結果
動画準備中
その他の活用例
ブザーは音が必要なさまざまなプロジェクトに活用できます。
- アラームシステム:特定の条件が満たされたときに警告音を鳴らすシステム
- タイマー:時間の経過を知らせる音
- 音楽再生:簡単なメロディや効果音を再生する装置
- ゲーム:ゲーム内の効果音や勝敗を知らせる音