8 Arduino パッシブ・ブザー(圧電スピーカー)を接続
この記事では、Arduino にパッシブ・ブザー(圧電スピーカー)を接続して色々な音を発生させます。
圧電スピーカーは、電子ブザーとは異なり、内部には発振回路が入っていないので、直流電圧を加えるだけでは音が鳴りません。Arduino で、方形波を作り圧電スピーカーに供給します。
圧電スピーカーの端子には極性があるので、+ーを間違えないように気を付けます。
Arduinoから出力する方形波の周波数を変化させれば、圧電スピーカーから発生する音の高さも変化します。例えば、262Hzを出力すると「ド」の音に、440Hzを出力すると「ラ」の音になります。
今回電子ブザーはlピン8 - GND 間に取り付けました。
スケッチ内容
スケッチ内容を示します。
このスケッチでは、圧電スピーカーから「ドレミ...」の音を発生させます。
- melody[]配列に、「ドレミ...」の音の周波数を準備します。
- 配列の先頭の周波数を、500ms 間、PBuzzerピンから出力するように tone関数を実行します。
- tone関数の実行から1秒後に次の配列の周波数を選び tone関数を実行します。
tone関数は500msで出力がなくなるので、その後 500msの無音時間があり次の音が出力されます。
// 圧電スピーカーで「ドレミ...」を演奏 // 2021-6-2 #define PBuzzer 8 // 音符を melody[] 配列にセット int melody[] = { // ド レ ミ ファ ソ ラ シ ド 262,294,330,349,392,440,494,523}; int duration = 500; // 500 ms void setup() { } void loop() { for (int thisNote = 0; thisNote < 8; thisNote++) { // pin8 に、長さ500ms の音を出力する tone(PBuzzer, melody[thisNote], duration); // 1秒ごとに次の音を出力する delay(1000); } // 一巡したら2秒無音状態をつくる delay(2000); }
使用した Arduino命令
今回使用したArduino関連の命令の簡単な説明とその日本語レファレンスの掲載されているリンクを紹介します。
- tone(pin, frequency, duration)
指定周波数(frequency)の矩形波を出力します。
時間(duration)を指定しなかった場合、
noTone()を実行するまで動作を続けます。
次回は、チルト・スイッチ(傾斜スイッチ)を接続します。