부저(Buzzer)

아두위키 : Arduwiki
ArduWiki (토론 | 기여)님의 2025년 3월 27일 (목) 14:20 판


概要

ブザー(Buzzer)は音を発生させる装置で、Arduinoのようなマイクロコントローラーボードと組み合わせて使用され、さまざまなプロジェクトで警告音、通知音、音楽などを再生するために使用されます。ブザーは主にアクティブブザー(Active Buzzer)とパッシブブザー(Passive Buzzer)に分けられます。

アクティブブザーとパッシブブザー

アクティブブザー(Active Buzzer)

アクティブブザーは内部に発振回路が内蔵されており、電源を供給するだけで自動的に音を鳴らします。制御が簡単で、主に一定の周波数(音の高さを変えず一種類)の音を出すのに使用されます。

  • 簡単な制御:単に電源をオン・オフするだけで音が出ます。
  • 一定の周波数:特定の周波数の音のみを発生させます。

パッシブブザー(Passive Buzzer)

パッシブブザーは、電源を供給しても自動的には音が出ません。PWM(Pulse Width Modulation)信号を使用して周波数を制御することで、さまざまな周波数の音を生成できます。メロディや多様な音を再生するのに便利です。

  • 複雑な制御:外部回路またはソフトウェアで周波数を制御する必要があります。
  • 多様な周波数:さまざまな周波数の音を発生させることができます。

アクティブブザーとパッシブブザーの識別

アクティブブザーとパッシブブザーは外見では区別が難しい場合があります。簡単なテストで識別する方法があります。

1. ラベルとマーキング

外観による識別方法ですが、製品によって表示が異なるため確実とは限りません。

  • アクティブブザー:「Active」や特定の周波数(例:「5V 12kHz」)と表示されていることがあります。
  • パッシブブザー:「Passive」または周波数表示のないことが多いです。

2. テスト

最も確実な方法は、簡単な回路を組んでテストすることです。

  • アクティブブザー:電源を接続するとすぐに音が出ます。
  • パッシブブザー:電源を接続しても音が出ず、周波数信号を入力すると音が出ます。

回路構成

製品によってブザーの形状は異なりますが、原理は同じです。

ピンが2本の場合

  1. ブザーの+端子をArduinoのデジタルピンに接続します。
  2. ブザーの-端子をArduinoのGNDに接続します。

ピンが3本の場合

  1. ブザーの+端子(またはVCC)をArduinoの5Vピンに接続します。
  2. ブザーの-端子をArduinoのGNDに接続します。
  3. ブザーの信号ピンを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. 実行結果

動画準備中

その他の活用例

ブザーは音が必要なさまざまなプロジェクトに活用できます。

  • アラームシステム:特定の条件が満たされたときに警告音を鳴らすシステム
  • タイマー:時間の経過を知らせる音
  • 音楽再生:簡単なメロディや効果音を再生する装置
  • ゲーム:ゲーム内の効果音や勝敗を知らせる音