受動ブザーをArduinoで動かします。
目次:
今回の目的
ELEGOOのチュートリアルに「受動ブザー」(英語版の「Passive Buzzer」を日本語版は直訳した様子)を見ていきます。
※チュートリアルの文章(PDF日本語版含む)もスケッチもELEGOOのサイトから無料でダウンロードできました。
「受動ブザー」(圧電スピーカ)
図1がELEGOOのキットに付属している受動ブザーです。
リード端子2本に長さの違いはありませんが、ケースの「+」刻印、もしくは裏面基板の「+」「―」表記で極性を区別できます。
チュートリアルにも実物にも型式表記はありませんが、「圧電スピーカー」「パッシブブザー」でネット検索すれば似たような商品はたくさん見つかります(発振回路入りの「電子ブザー」や「アクティブブザー」と間違えないよう注意)。
なお、リード端子間の抵抗値は16Ω(正確には15.9Ω)でした。
器材接続
Arduinoの出力端子に直結です。結線はチュートリアル通りですので省略します。
スケッチ
ブザーを鳴らすのはtone関数です。
指定した周波数の矩形波(デューティ50%。1周期中のHigh電圧とLow電圧の期間が半々)を指定時間生成します。
tone(pin, frequency, duration)
pin:出力のpin番号
frequency:周波数
duration:(鳴る)時間
スケッチです。ほぼオリジナル通りですが簡単にしました。
int melody[] = { //melody配列を定義
262, 294, 330, 349, 392, 440, 494, 523}; // 音域C4,D4,E4,F4,G4,A4,B4,C5
int duration = 500; // 500ms(0.5秒)
void setup() { // setup関数の中身は今回空っぽですが、記述しないとエラーになります。
}
void loop() {
for (int thisNote = 0; thisNote < 8; thisNote++) { // melody配列を要素0~7まで
tone(8, melody[thisNote], duration); // tone関数で500ms(0.5秒)づつブザーを鳴らす
delay(1000); // ブザー音鳴らした後に1,000ms(1秒)空白時間
delay(2000); // melody変数を全要素終了したら2,000ms(2秒)空白時間
}
}
音域(国際表記)で言うところの、C4 → D4 → E4 → ・・・ → C5 相当で順繰りブザー音が鳴ります。
上記スケッチでは周波数の値を配列としてtone関数に与えておりますが、オリジナルではライブラリ"pitches.h"を使用しておりました。
"pitches.h"ライブラリにはB0(31Hz)からDS8(4,978Hz)まで変数が例えば"#define NOTE_C4 262"のように変数("NOTE_C4")を周波数の値("262")と関連付けて与えておりました。
今回は簡略化のため"pitches.h"ライブラリを使用しませんでしたが、使った方がスケッチ中で"NOTE_音域"で判別出来るので動作を振り返りやすくなると思います。
0 件のコメント:
コメントを投稿