受動ブザーをArduinoで動かす①チュートリアル通りに動かす

2022/03/21

Arduino Passive Buzzer

t f B! P L

 受動ブザーをArduinoで動かします。

 目次:

今回の目的

ELEGOOのチュートリアルに「受動ブザー」(英語版の「Passive Buzzer」を日本語版は直訳した様子)を見ていきます。

※チュートリアルの文章(PDF日本語版含む)もスケッチもELEGOOのサイトから無料でダウンロードできました。

Download ⇒「Arduino Kits & ~」⇒「UNO R3 Starter Kits」⇒ 「ELEGOO UNO R3 The Most Complete Starter Kit」 からダウンロードリンクに辿り着けます。


「受動ブザー」(圧電スピーカ)

部品自体を指すなら「圧電スピーカ」と呼んだ方が通りが良いかと思います。

電圧をかけることによって内部の振動板が動きます。
連続的な周波数信号を与えれば、その周波数で振動板が動き、その周波数で空気が震える。
つまり入力した周波数信号に応じた音が出力されます。
入力信号次第でブザーにもなりますが、スピーカであって用途はブザーに限りません。

当記事ではチュートリアルとの混乱を避けるため、以降「受動ブザー」と呼びます。

(1)表

(2)裏

図1 受動ブザー(圧電スピーカー)

図1がELEGOOのキットに付属している受動ブザーです。

リード端子2本に長さの違いはありませんが、ケースの「+」刻印、もしくは裏面基板の「+」「―」表記で極性を区別できます。

チュートリアルにも実物にも型式表記はありませんが、「圧電スピーカー」「パッシブブザー」でネット検索すれば似たような商品はたくさん見つかります(発振回路入りの「電子ブザー」や「アクティブブザー」と間違えないよう注意)。

なお、リード端子間の抵抗値は16Ω(正確には15.9Ω)でした。


器材接続

Arduinoの出力端子に直結です。結線はチュートリアル通りですので省略します。

図2 接続

スケッチ

ブザーを鳴らすのは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_音域"で判別出来るので動作を振り返りやすくなると思います。

このブログを検索

ブログ アーカイブ

自己紹介

にほんブログ村

QooQ