Arduino

Arduinoを使って音をならす

世の中には電子機器から多くの音が出ています。例えば、機器が倒れたり、故障したら警告音が鳴ったりします。これには圧電ブザーが使われ、耳から情報を取得するため作業中に気づきが得られるメリットがあります。

その他にも店内に入ったときにメロディが流れたり、バースデーカードからメロディが流れるものもあります。

今回は、Arduinoから音を鳴らす電子部品として圧電ブザーとメロディ端子の使い方についてご紹介します。

圧電ブザーをならす

警告音によって人に気づきを与えられる圧電ブザーを使った回路を作成します。スイッチを押すとブザーがなり、再びスイッチを押すとブザーが止まる仕様としています。

圧電ブザー

圧電ブザーは端子に電源を接続することによりブザーがなる電子部品です。圧電ブザーには、発振回路が内蔵されているため、電源に接続すれば簡単にブザーを鳴らすことができます。

今回使用する以下の圧電ブザーはHDB06LFPNです。

データシートを見ると入力電圧は4V~8Vであるため、Arduinoの出力5Vで事足りそうですが、電流をみると最大30mA流れると書いてあります。Arduinoにとっては大きな電流値となるため、ここではトランジスタを用いています。

圧電ブザーには電極があり、端子の長い方が+で短い方が-になっていますので、間違えないようにしてください。

作成した回路

作成した回路を下図をご覧ください。

使用した装置及び部品は下表をご覧ください。

Arduinoマイコン搭載の小型コンピュータ
ブレッドボード抵抗・ジャンパー線などを使って回路を作る基板
ジャンパー線電気を中継する線
トランジスタ半導体のキャリアの運動によるスイッチング動作と増幅動作をもつ素子
抵抗10kΩ×2電圧を下げる端子
タクトスイッチボタンのON/OFF
圧電ブザーブザーを鳴らす電子部品

併せて、以下の配線図もご覧ください。

※圧電ブザーのパーツがなかったので、スピーカーのパーツで代用しています。

プログラムコード

プログラムコードは以下の通りです。

const int BUZZER_PIN = 5;//圧電ブザーのピン
const int SWITCH_PIN = 6;//スイッチのピン

int states = -1;//ボタン押下の状態管理変数
int value = 0;//現在のスイッチの状態
int old_value = 0;//前回のスイッチの状態

void setup() {
  // put your setup code here, to run once:
 pinMode(BUZZER_PIN,OUTPUT);
 pinMode(SWITCH_PIN,INPUT);
}

void loop() {
  // put your main code here, to run repeatedly:

 value = digitalRead(SWITCH_PIN);

 //スイッチが押下されたかどうか
 if(value == HIGH && old_value == LOW)
 {
  states = states * -1;
 }
 else
 {
  //処理なし
 }
 old_value = value;

 //スイッチが押された場合
 if(states > 0)
 {
  digitalWrite(BUZZER_PIN,HIGH);
 }
 else
 {
  digitalWrite(BUZZER_PIN,LOW);  
 }

}

実行結果

実行結果は以下の動画をご覧ください。

メロディ端子をならす

続いて、メロディ端子を使ってメロディを流す回路を作成します。スイッチを押すとメロディが流れ、再びスイッチを押すとメロディが止まります。

メロディ端子

メロディ端子とは予め音楽が組み込まれた電子部品です。端子に電源を接続すると、スピーカー経由でメロディが流れる仕組みとなっています。

今回使用するのは、UM66T32Lでメロディは「かっこう・ワルツ」が流れます。

データシートをみると入力電圧が1.5v~4vであるため、Arduinoの出力電圧は3.3Vとします。

メロディ端子からメロディを流すには端子の出力先に下図のようなスピーカーを接続してください。

作成した回路

作成した回路は下図をご覧ください。

使用した装置及び部品は下表をご覧ください。

Arduino マイコン搭載の小型コンピュータ
ブレッドボード 抵抗・ジャンパー線などを使って回路を作る基板
ジャンパー線 電気を中継する線
MOSFET 半導体のキャリアの運動によるスイッチング動作と増幅動作をもつ素子
抵抗1kΩ 電圧を下げる端子
抵抗10kΩ×2 電圧を下げる端子
タクトスイッチ ボタンのON/OFF
メロディ端子電源と接続するとメロディが流れる電子部品
スピーカー振動で音を出力する電子部品

併せて配線は下図も参考にしてください。

プログラムコード

プログラムコードは以下の通りです。圧電ブザーを鳴らすプログラムコードと同じです。

const int MELODY_PIN = 5;//メロディー端子のピン
const int SWITCH_PIN = 6;//スイッチのピン

int states = -1;//ボタン押下の状態管理変数
int value = 0;//現在のスイッチの状態
int old_value = 0;//前回のスイッチの状態

void setup() {
  // put your setup code here, to run once:
 pinMode(MELODY_PIN,OUTPUT);
 pinMode(SWITCH_PIN,INPUT);
}

void loop() {
  // put your main code here, to run repeatedly:

 value = digitalRead(SWITCH_PIN);

 //スイッチが押下されたかどうか
 if(value == HIGH && old_value == LOW)
 {
  states = states * -1;
 }
 else
 {
  //処理なし
 }
 old_value = value;

 //スイッチが押された場合
 if(states > 0)
 {
  digitalWrite(MELODY_PIN,HIGH);
 }
 else
 {
  digitalWrite(MELODY_PIN,LOW);  
 }

}

実行結果

実行結果は以下の動画をご覧ください。

まとめ

圧電ブザーとメロディ端子を鳴らす回路を作成しました。多くの電子機器は音を鳴らす機能を持っています。今回のような方法で音を鳴らす事ができますので、しっかりと理解しておきたいものです。

参考書籍

Arduino電子工作