今回はArduinoでブザーを鳴らしてみます。ただ鳴らすだけならアクティブブザーを使えば驚くほど簡単にできます。

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

ブザーにはアクティブブザーとパッシブブザーの2種類があります。またアクティブブザーのことを電子ブザー、パッシブブザーのことを圧電スピーカーと呼ぶのこともあるようですが、正しい表現ではないようなので、ここではアクティブ、パッシブという呼称で進めます。

まず二つの違いですが・・・

  • アクティブブザー:内蔵された音源を再生する
  • パッシブブザー:普通のスピーカーに近い動作をする

アクティブ・ブザー

アクティブブザーの入出力

アクティブブザーはブザー内に音源が内蔵されていて、電圧の印可がスイッチとなり再生されます。

音源と言っても一定の周波数で「ビーッ」となるだけです。アクティブスピーカーは極性が決まっています。

パッシブ・ブザー

パッシブブザーの入出力

パッシブブザーは通常のスピーカーと同じようなもの。そのためマイナスの入力でもちゃんと音はなる。だから極性を気にせずに接続できる。なんなら交流でもいいです。

ただ通常のスピーカーに比べれば小さく作りもショボいため再生できる周波数帯は狭く音も悪い。あくまでもブザーとして使うものです。

見分け方は?

見分け方は簡単。ブザーの裏側にカバーが付いてるものがアクティブ・ブザー。基盤がむき出しのものがパッシブ・ブザーです。

今回はアクティブブザーを使用する

今回のキットに付属していたのはアクティブブザーだったので、それを使って実験してみます。

回路図と結線

ブザー回路図

本当につなぐだけだね

ツン子

この図いる?ってくらい単純な回路w

ちたまん

ブレッドボードで結線する

ブザーとArduinoの接続図

実際に結線するとこんな感じ。ブザーの極性だけは気を付けよう。

スケッチにプログラムを書く

int buzzer = 12;
void setup()
{
pinMode(buzzer,OUTPUT);
}
void loop(){
  unsigned char i;
  while(1){
    
    for(i=0;i<80;i++){
      digitalWrite(buzzer,HIGH);
      delay(1);
      digitalWrite(buzzer,LOW);
      delay(1);
    }
    //output another frequency
    for(i=0;i<100;i++){
      digitalWrite(buzzer,HIGH);
      delay(2);
      digitalWrite(buzzer,LOW);
      delay(2);
    }
  }
}

このスケッチには2つのFor文が記述されています。上のFor文では1m秒音を出して1m秒音を止めている。つまり周期は2m秒なので周波数は500Hz。下のFor文は250Hzです。

何故2種類の周波数で駆動するのかというと、今回のサンプルコードが周波数を変えても音程が変化しないことを確かめるためのものだからです。音源が一つですから同じビープ音が鳴るはずですね

音が変化したように感じる

しかしこのスケッチを実行してみると、ブザーの音が変化していると感じるはずです。

このブザーの音源の正確な周波数がいくつかわからないですが、実測では2.5kHzくらいでした。駆動周波数が250Hzでも500Hzでもそれは変わりませんでしたので音程は間違いなく変化していないです。

なぜ音が変化したように感じるかというと、高い周波数で駆動するということはすなわち断続的に音が発生しているということです。断続的ですが人はその一つ一つを独立した音として認識することは出来ません。つながった1音として認識します。そのため周波数が変われば聴感上では音が変わったように感じます。音程は一切変わっていません。音色が変わったと言えばいいのかな?

演奏のテンポで楽器の音程は変わるワケないもんね。
でも聴こえ方は確かに変わるからそれと同じだね!

ツン子

ただブザーの応答速度が十分に速いと仮定すれば5kHzとかでスイッチすれば音程も変えることもできるかもしれないですね。多分歪んだ音が出るだけだと思いますが・・・

手軽に鳴らすならアクティブブザー

このように音程は変えられないとはいえ、アクティブブザーを使えば音を鳴らすことは簡単にできます。とにかくなれば良いということならアクティブブザーがオススメ。

反対にメロディを流したい。多数の音を鳴らしたいということならパッシブブザーが必要です。