Arduinoでブザーを鳴らす|アクティブとパッシブの見分け方、tone()の使い方と音階の周波数、メロディの組み方
配線の基本とピンの電流
圧電ブザーを直接つなぐ
圧電式のブザーは電流が小さいので、Arduino のデジタルピンに直接つなぐ例が多く見られます。配線は次のとおりです。
- ブザーの+側を、デジタルピン(例として8番)につなぐ。
- ブザーのもう一方を、GND につなぐ。
- 気になる場合は、ピンとブザーの間に100Ωから数百Ω程度の抵抗を入れる。電流を抑え、音量も少し小さくなります。
足に+と-の区別がない圧電素子(金属の円板に線が付いたもの)もあります。その場合は、どちらをピンにつないでも鳴ります。
電磁ブザーやモジュールの電流に注意
Arduino Uno のデジタルピン1本から取り出せる電流には上限があり、一般には20mA程度までにとどめるのが目安とされています。電磁式のブザーや、一部のアクティブブザーは、これを超える電流を必要とすることがあります。
部品の電流は、データシートの「定格電流」や「消費電流」の欄で確かめます。ピンの許容値を超えそうな場合は、ピンで直接ブザーを動かすのではなく、トランジスタをスイッチとして使い、ブザーには電源から直接電流を流します。電磁ブザーのようにコイルを含む部品では、電流を切った瞬間に高い電圧が生じることがあるため、ブザーと並列に逆向きのダイオードを入れて、トランジスタを守るのが一般的です。

電源まわりの考え方や、電圧と電流の関係については、電子工作の電源の選び方もあわせて読むと理解が深まります。
ブレッドボードでの配置のコツ
ブザーの足は短く、ブレッドボードの穴に深く刺さりにくいことがあります。抜けやすいと感じたら、少し押し込むか、ジャンパー線で引き出して固定します。また、ブザーの上面には音の出る穴が開いているので、上をふさがないように置きましょう。
tone()とnoTone()の使い方
基本の書き方
パッシブブザーを鳴らすには、Arduino の tone() 関数を使います。書き方は次の二通りです。
tone(ピン番号, 周波数); // 止めるまで鳴り続ける
tone(ピン番号, 周波数, 長さ); // 指定したミリ秒だけ鳴る
noTone(ピン番号); // 音を止める
tone() は、指定したピンから、周波数に合わせてオンとオフを繰り返す信号(矩形波)を出します。たとえば周波数を440にすると、1秒間に440回オンとオフが切り替わり、「ラ」の音に聞こえます。
長さを指定したときの注意
3番目の引数で長さを指定すると、その時間がたつと自動で音が止まります。ここで注意したいのは、tone() は音を鳴らし始めるとすぐに次の行に進むことです。続けて tone() を書くと、前の音が鳴り終わる前に次の音に切り替わってしまいます。
tone(8, 262, 500); // ドを0.5秒
tone(8, 294, 500); // すぐにレに切り替わってしまう
音を順番に鳴らしたい場合は、tone() のあとに delay() を入れて、音が鳴り終わるまで待ちます。
tone(8, 262, 500);
delay(600); // 0.5秒の音+0.1秒の間
tone(8, 294, 500);
delay(600);
音の長さより少し長く待つと、音と音の間にわずかな切れ目ができ、一音ずつがはっきり聞こえます。
同時に鳴らせるのは一つだけ
Arduino Uno などの標準的なボードでは、tone() で同時に鳴らせる音は一つだけです。別のピンで tone() を呼ぶ前に、前のピンを noTone() で止める必要があります。和音を出したい場合は、専用のライブラリや別の部品を検討することになります。











