Arduinoでブザーから音を出す方法【音程や音量を調整可能】

どうも、なかしーです。

僕は自動車のマイコンにプログラミングをする組み込みエンジニアとして働きつつ、YouTubeでArduinoの使い方を解説しています。

Arduino初心者
Arduino初心者

Arduinoにブザーを繋いで音を出す方法を知りたいなぁ。

という悩みを解決します。

ブザーは電圧をオンとオフ繰り返すことで膜が振動し、音が出るようになっています。

オンとオフを繰り返す時間を変えると音程が変化し、オンとオフの比率を変えると音量が変化します。

なかしー
なかしー

「カエルのうた」みたいに簡単な曲ならブザーで再現可能ですよ!

この記事では「Arduinoでブザーから音を出す方法」について紹介します。

ちなみに、動画でも解説しています!

Arduinoでブザーを音を出す方法

電子工作で使われるブザーは、コイルで膜を振動させることで音を出しています。

さらにブザーには電圧を与えるだけで音が出るものとPWM波を与えないと音が出ない二種類があります。

  • 自励式:電圧を与える
  • 他励振式:PWM波を与える

PWM波を使うブザーの場合は、音程と音量を変化させることが可能です。

Arduinoでブザーの音程を変える方法

音程を変えるには、PWM波の周波数(周期)を変える必要があります。

Arduinoには標準でPWM波の周波数を変えるための関数が用意されています。

tone(pin, frequency)

Arduinoにブザーを繋いでいるピン番号を引数pinに入力し、周波数をfrequencyに入力します。

このtone関数は1つのピンだけ有効で、複数のピンで同時に使うことができません。

ピンを切り替えたい時は一度noTone関数の後にtone関数を実行してください。

また、31Hz以下の周波数は生成できません。

音程と周波数は次の表を参考にしてください。

音程周波数(Hz)
ド(C4)261.626
293.665
329.628
ファ349.228
391.995
440.000
493.883
ド(C5)523.251

Arduinoでブザーを鳴らすプログラム

タクトスイッチをデジタルピン4に、ブザーをデジタルピン3に繋ぎました。

タクトスイッチを押すと音程が上がるプログラムを作りました。

プログラム
unsigned int buzzer[8] = {261,293,329,349,391,440,493,523};
unsigned char count = 0;

void setup() {
  pinMode(3,OUTPUT);
  pinMode(4,INPUT);

}

void loop() {
  tone(3,buzzer[count]);
  if(digitalRead(4) == 1) {
    count++;
    if(count > 7)
      count = 0;
    while(digitalRead(4) == 1);
  }
}

スイッチを押して離すと音階が「ド→レ→ミ」と上がっていきます。

音量を変えるにはオンとオフの比率(デューティー比)を変える必要があるんですが、tone関数では周波数のみしか変更できませんでした。

音量を変えたい方は関数を自作するか、ライブラリをネットで探してみてください。

関数を自作するなら「オン→ディレイ→オフ→ディレイ→オン」を繰り返すようにして、オンとオフのディレイの時間を調整すると音量が変わります。

ちなみに、オンとオフの合計値の逆数が周波数になります。

Arduinoでブザーから音を出す方法|まとめ

この記事では「Arduinoでブザーから音を出す方法」について紹介しました。

ブザーは電圧を与えると音が出る自励式とPWM波を与えることで音が出る他励振式の2種類があります。

他励振式のブザーなら音程と音量を変えることできます。

  • 音量:オン時間を変える(デューティー比)
  • 音程;周波数(周期)を変える

Arduinoには周波数を変えることができるtone関数があります。

tone関数では音量を変えることが出来ないので、音量を変えたい場合は関数を自作するかライブラリをネットで探す必要があります。

Arduino関連の人気記事

>>【Arduino入門キット】電子工作の勉強におすすめ【こんなに安くていいの?】

>>Arduinoをゼロから勉強する方法を紹介【参考書は不要】

>>Arduinoのプログラムの書き方【基本的なルールは4つある】

当ブログで人気のArduino入門キット

第1位:Arduino UNO スターターキット
Arduino UNOのスタータキットです。電子工作でよく使う部品が一式揃っており、バラバラで購入するより格段に安いです。
第2位:ELEGOO Arduino用のUNO R3 最終版スタータキット
こちらも電子工作によく使う部品が第一位のスタータキットよりたくさん入っています。とてもお買い得です。
第3位:ELEGOO Arduino MEGA 2560 R3
UNOの上位互換版MEGAのスターターキットです。これだけ入っていれば十分に電子工作の基本をマスターできることでしょう。
エンジニアが教えるArduino入門講座のまとめ【解説動画付き】