電子ブザーと圧電スピーカーを使ってみる(Arduino)

今回は、
・電子ブザー(アクティブブザー)
・圧電スピーカー(パッシブブザー)
を使ってみます。

機器の動作状態を知らせるために、
音を利用することがよくあります。

Arduinoには、標準で音を出す機能はありませんから、
ブザーやスピーカーを回路に加えることになります。

一般に、
・電子ブザー(アクティブブザー)は、
 発振回路が内蔵されていて、動作電圧を掛けると、
 内蔵の発振回路を使った音程の音が鳴ります。
・圧電スピーカー(パッシブブザー)は、
 外部から与えた音声周波数(信号)に従った音が鳴ります。
 普通のスピーカーと同じです。
が利用されているのではと思います。

私が所有している製品です。

電子ブザーと圧電スピーカー(パッシブブザー)
電子ブザーと圧電スピーカー(パッシブブザー)

私の所有製品とは違いますが、類似商品のご紹介です。
電子ブザー 12mm UDB-05LFPN
  ¥80- [UDB-05LFPN]
  秋月電子通商
  http://akizukidenshi.com/catalog/g/gP-09704/

圧電スピーカー(圧電サウンダ)(13mm)PKM13EPYH4000-A0
  ¥30- [PKM13EPYH4000-A0]
  秋月電子通商
  http://akizukidenshi.com/catalog/g/gP-04118/

まず、電子ブザー(アクティブブザー)を使ってみます。
電子ブザーは、電流を流す、流さないの2つの選択です。
・電流を流す(HIGH):ブザーが鳴る
・電流を流さない(LOW):ブザーは鳴らない
です。

回路は図の通りです。
   この回路図の作図には fritzing を利用させて頂いております。
   https://fritzing.org/home/
   ・電子ブザーは、極性(+-)がありますから間違えないように設置します。

電子ブザー(アクティブブザー)の回路図
電子ブザー(アクティブブザー)の回路図
実際の配線
実際の配線

スケッチです。

// 大域変数宣言
int pinNo = 9;   // 9番ピン設定
void setup() {
  // put your setup code here, to run once:
  pinMode( pinNo, OUTPUT );   // 9番ピンを出力設定
}
void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite( pinNo, HIGH );     // ブザーを鳴らす
  delay( 500 );    // 500ms停止
  digitalWrite( pinNo, LOW );     // ブザーを止める
  delay(1000);     // 1000停止
}

LED点灯、消灯させるスケッチと同様ですね。
Arduino に書き込んで実行してみます。

Arduino IDE画面
Arduino IDE画面

音色は製品によって違いますが、
0.5秒鳴り、1.0秒停止と繰り返しでいると思います。

では、もう一つ、
スケッチしてみます。

// 大域変数宣言
int pinNo = 9;   // 9番ピン設定
void setup() {
  // put your setup code here, to run once:
  pinMode( pinNo, OUTPUT );   // 9番ピンを出力設定
}
void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite( pinNo, HIGH );     // ブザーを鳴らす
  delay( 500 );    // 500ms停止
  digitalWrite( pinNo, LOW );     // ブザーを止める
  delay( 50 );     // 50ms停止
  // ON、OFFのタイミングを早くする
  for( int i = 0; i < 20; i++ ){
    digitalWrite( pinNo, HIGH );     // ブザーを鳴らす
    delay( 20 );    // 20ms停止
    digitalWrite( pinNo, LOW );     // ブザーを止める
    delay( 20 );     // 20ms停止
  }
  delay( 1000 );    // 1000ms停止
}

Arduino に書き込んで実行してみます。

Arduino IDE画面
Arduino IDE画面

音色は、内蔵の発振回路で決まってしまいますが、
ON(HIGH)、OFF(LOW)のタイミングを変えることで、
音が変化して聞こえるのではないでしょうか。

続いて、圧電スピーカー(パッシブブザー)を使ってみます。

圧電スピーカーは、普通のスピーカーと同じく、
音声信号(周波数)に従った音が鳴ります。

音階周波数(Hz)
ド4261.6
レ4293.6
ミ4329.6
ファ4349.2
ソ4391.9
ラ4440.0
シ4493.8
ド5523.2
音階と周波数

圧電スピーカーに、周波数を送るには、
tone( ) 関数を使用します。
tone( ) 関数の書式は、
 tone ( ピン番号, 周波数(Hz), 出力する時間 )
で、
・デジタルピン9番を使用
・262HZの周波数(ド4)
・200ms間(200ミリ秒)
の場合、
 tone ( 9, 262, 200 )
 delay( 200 )
となります。
 delay( 200 )
ですが、
これは、次の動作に入るのを避けるため、
200ms間、音が鳴っている間、停止させます。

簡単ですが、ドレミの3音を順番に繰り返し鳴らしてみます。
回路は図の通りです。
・製品にもよると思いますが、私が使用した製品には極性(+-)はありません。

圧電スピーカー使用の回路図
圧電スピーカー使用の回路図
実際の配線

スケッチです。

// 変数宣言と初期化
int pinNo = 9;  // 使用デジタルピン番号設定
void setup() {
  // put your setup code here, to run once:
}
void loop() {
  // put your main code here, to run repeatedly:
  tone( pinNo, 262, 200 );  // ドの音を発信
  delay( 200 );
  tone( pinNo, 294, 200 );  // レの音を発信
  delay( 200 );
  tone( pinNo, 330, 200 );  // ミの音を発信
  delay( 2000 );    // 2000ms停止
}

Arduino に書き込んで実行してみます。

Arduino IDE画面
Arduino IDE画面

ドレミファソラシドを鳴らせてみます。
少し工夫して、スケッチしてみます。

// 変数宣言と初期化
int sound_type[8] = {
  262, 294, 330, 349, 392, 440, 494, 523  // ドレミファソラシド
};
// 変数宣言と初期化
int pinNo = 9;  // 使用デジタルピン番号選定
void setup() {
  // put your setup code here, to run once:
}
void loop() {
  // put your main code here, to run repeatedly:
  // 配列に設定された音を順番に発信する
  for( int i = 0; i < 8; i++ ){
    tone( pinNo, sound_type[i], 200 );  // 発信
    delay( 200 );   // 停止
  }   
     // 配列に設定された音を逆順に発信する
  for( int i = 7; i >= 0; i-- ){
    tone( pinNo, sound_type[i], 200 );  // 発信
    delay( 200 );   // 停止
  }
  delay( 2000 );    // 2000ms停止
}

Arduino に書き込んで実行してみます。

Arduino IDE画面
Arduino IDE画面

配列と繰り返し文法を利用すると、
短く記述することができます。

ドレミファソラシド
を繰り返し鳴らしていると思います。