スポンサーリンク
ものづくり・DIY

Arduinoでブザーを鳴らす|アクティブとパッシブの見分け方、tone()の使い方と音階の周波数、メロディの組み方

Arduinoでブザーを鳴らすときに迷いやすい、アクティブ(発振回路内蔵)とパッシブの違いと見分け方、圧電ブザーと電磁ブザーの電流の違い、tone()とnoTone()の使い方、ドレミの周波数の求め方、配列でメロディを組む方法、PWMとの干渉や音が小さいときの原因までを、配線とスケッチの例で順に説明します。

マイコンボードとブレッドボードにつないだブザー

Arduinoで LED を点滅させ、ボタンの入力を読めるようになると、次に「音を出したい」と考える人が多いのではないでしょうか。タイマーが終わったら知らせる、ボタンを押したら確認音を鳴らす、簡単なメロディを流す。ブザーは安価で配線も少なく、作品の手応えを大きく変えてくれる部品です。

ところが、通販や部品店で「ブザー」を買ってみると、ピンをHIGHにしても鳴らない、逆に音程が変えられない、思ったより音が小さい、ということがよく起こります。原因の多くは、ブザーの種類の違いと、音を出すしくみの理解にあります。この記事では、ブザーの種類の見分け方から、tone()の使い方、音階の周波数、メロディの組み方、つまずきやすい点までを順に説明します。Arduino の基本操作やブレッドボードの使い方は、Arduinoのはじめの一歩で紹介しています。

スポンサーリンク

ブザーが音を出すしくみ

音は空気の振動

音は、物が細かく震えて空気を押し引きし、その振動が耳に届いたものです。1秒間に何回震えるかを周波数と呼び、単位はヘルツ(Hz)です。周波数が高いほど高い音、低いほど低い音に聞こえます。人が聞き取れるのはおよそ20Hzから20000Hzの範囲と言われますが、年齢とともに高い音は聞こえにくくなります。

ブザーは、電気の信号で薄い板を震わせて音を出す部品です。板を震わせる方法によって、大きく圧電式と電磁式に分かれます。

圧電式と電磁式

圧電式は、セラミックの薄い板(圧電素子)に電圧をかけると、わずかに伸び縮みする性質を利用します。電圧のオンとオフを繰り返すと板が震え、音が出ます。圧電素子は電気的にはコンデンサーに近い性質で、流れる電流はとても小さいのが特徴です。

電磁式は、コイルに電流を流して磁石の力で金属の板を引きつけ、それを繰り返して音を出します。仕組みはスピーカーに近く、圧電式より電流が多く流れる傾向があります。見た目が似ていても、中身によって必要な電流が大きく違う点は覚えておきましょう。

圧電式と電磁式のブザー(圧電式と電磁式の比較)
見た目が似ていても電流の大きさが違います。

アクティブとパッシブの違いと見分け方

発振回路があるかどうか

ブザーにはもう一つ、重要な分け方があります。それが「アクティブ」と「パッシブ」です。

裏返した二種類のブザー。基板が見える物と樹脂で封じた物
裏側の違いは見分けの手がかりの一つ

アクティブブザーは、中に音の振動を作る発振回路を持っています。電圧をかけるだけで決まった高さの音が鳴るため、Arduino ではピンを HIGH にすれば鳴り、LOW にすれば止まります。そのかわり、音の高さは基本的に変えられません。

パッシブブザーは、発振回路を持たず、外から振動の信号を与える必要があります。電圧をかけっぱなしにしても、最初に「カチッ」と小さな音がするだけで鳴り続けません。そのかわり、与える信号の周波数を変えれば、ドレミのように音の高さを自由に変えられます。

項目 アクティブブザー パッシブブザー
発振回路 内蔵している 内蔵していない
鳴らし方 ピンを HIGH にする tone() などで周波数を与える
音の高さ ほぼ一定 自由に変えられる
向いている用途 警告音、確認音 メロディ、効果音
直流をかけたとき 鳴り続ける 「カチッ」と鳴って止まる
スポンサーリンク

見た目で見分ける手がかり

外見からの見分け方として、よく紹介されるのは次のような点です。

  • 裏側が黒い樹脂などで封じられているものはアクティブ、緑色などの基板が見えるものはパッシブであることが多い
  • 上面に「+」の印やシールが貼られているものはアクティブであることが多い
  • 背の高さが違う組み合わせで売られている場合、高いほうがアクティブであることが多い

ただし、これらはあくまで傾向で、製品によって例外があります。購入したときの説明やデータシートで確かめるのが確実です。

実際に試して確かめる

説明書きがない場合は、実際に試すのがいちばん確実です。ブザーの+側(長い足や「+」の印がある側)をArduinoのデジタルピンに、もう一方をGNDにつなぎ、次のスケッチを書き込みます。

const int buzzerPin = 8;

void setup() {
  pinMode(buzzerPin, OUTPUT);
  digitalWrite(buzzerPin, HIGH);  // 鳴り続ければアクティブ
  delay(1000);
  digitalWrite(buzzerPin, LOW);
  delay(1000);
  tone(buzzerPin, 440, 1000);      // 音程が出ればパッシブ
}

void loop() {
}

最初の1秒間に鳴り続ければアクティブ、最初は「カチッ」とだけ鳴り、後の tone() で「ラ」の音がはっきり出ればパッシブです。アクティブブザーに tone() を使うと、内部の発振と外からの信号が重なり、濁った音になることがあります。

次のページへ配線の基本とピンの電流
スポンサーリンク
  1. 秋の戸口に並ぶかぼちゃの明かりとかぶ、麦束
  2. 資料を手に落ち着いて話し合う二人
  3. ノートパソコンと資料、外付け記憶装置がある机
  4. 冬の木で越冬する卵のうやミノムシ、テントウムシ
  5. 青い折り鶴と三角に折った紙、無地の折り紙