【簡単】Arduinoで音を鳴らそう!パッシブブザーの使い方 #8
今回は、Arduino UNO R4でパッシブブザーを使った音の鳴らし方を解説します。
皆さんの知っている「ド」と「レ」とかを鳴らせます。完成品のプログラムも載せているので、安心してください。
ぜひ、最後までチャレンジしてみてくださいね👍
はじめに
この記事では、ELEGOOのArduino用電子LearningキットE3を使います。
👆のキットを使って、Arduino UNO R4でパッシブブザーを使った音を鳴らす方法を解説したいと思います。
必要なもの
1. マイコンボード
本記事では、Arduino UNO R4 Wi-Fiを使います。
2. 電子部品
ELEGOOのArduino用電子LearningキットE3に入っている電子部品を使います。
パッシブブザー × 1
ジャンパーワイヤー 適量
ブレッドボード × 1
音を鳴らすための基礎知識
パッシブブザー
パッシブブザーとは外から電圧を加えることで、その周波数に応じた音階が鳴るブザーです。
内部には電気を加えると変形する圧電素子が入っており、それが小刻みに震えることで音が鳴ります。その震え方を決めるのが電圧の周波数です。
そのため、加える電圧の周波数をコントロールすれば、決まったメロディーを奏でられます。
音階と周波数
私たちがよく知っている音階「ドレミファソラシド」には、それぞれ周波数が決まっています。
例えば、ド(C4)なら261Hz、ファ(F4)なら349Hzです。
👆のような決まった周波数をブザーに加えれば、ピアノの音階のように音を鳴らすことができます。
パッシブブザーを使った回路
回路図
非常にシンプルな回路です。ブザーの向きだけ注意しましょう。プラスマーク*がある方を8ピン側に配置します。
*圧電スピーカーに向きはないハズ?なのですが、表記があるので念のため合わせましょう。
配線の様子
パッシブブザーの端子が少し弱いので、あまり強く押し込まないようにしましょう。
プログラミング
ライブラリをインストールする
音を鳴らすためのライブラリ*をインストールします。
*ライブラリとは特定の動作に関するプログラムを1まとめにしたもので、インストールするとそこからプログラムを引用できるため、ユーザーは1から作る必要がなく、簡単にプログラムを開発できます。
画面左側、タテに並んだアイコンの上から3つ目をクリックしてライブラリマネージャーを開きます。
検索窓に「tone pitch」と入力し、👆の写真下側にある「TonePitch by Rodrigo」をインストールします。
これで音階の周波数が定義されたヘッダーファイル*が使えるようになりました。
*数値など関連した変数がずらっと宣言・定義されたファイルのこと。
ヘッダーファイルを読み込む
ライブラリをインストールしたら、プログラムでヘッダーファイルを読み込みます。👇のように記述するよう指示がありますので、そのように打ちましょう。
#define TONE_USE_INT
#define TONE_PITCH 440
#include <TonePitch.h>
1行目は、INT型の数字(整数)を使うことを宣言しています。2行目は、音階の基準周波数を440に設定しています。この2つの宣言によって、ヘッダーファイルから読まれる内容が変わります。
3行目で、TonePitch.h(ヘッダーファイル)を読み込みます。
読み込んだヘッダーファイルには音階の周波数が名前で定義されており、この名前をプログラム上で使います。代表的な音階の名前を👇にピックアップしておくので、チェックしてください。
ド NOTE_C4
レ NOTE_D4
ミ NOTE_E4
ファ NOTE_F4
ソ NOTE_G4
ラ NOTE_A4
シ NOTE_B4
(高い)ド NOTE_C5
*note : 英語で音符という意味
tone();を使って音を鳴らす
音を鳴らすために、tone();を使います。
tone(ピン番号, 周波数);
ピン番号はブザーがつながっているピンを指定します。例えば、8ピンでド(C4)の音を鳴らしたいときは👇のように記述します。
tone(8, NOTE_C4);
ここでNOTE_C4は、さきほど読み込んだヘッダーファイルに定義されている値(=261)です。
また、一定時間鳴らすためにtone();のあとにdelay();を入れましょう。秒数は自由に設定してください。
パッシブブザーで音を鳴らすプログラム
一定間隔でドレミファソラシドを鳴らすプログラムです。👇の注意事項をよく読んだ上で、ご使用ください。
//当Webサイトに掲載された内容によって生じた損害等の一切の責任を負いません。
//当webサイトの免責事項に同意いただける場合に限り、プログラムをご利用いただけます。
//#include <Arduino.h> //なくても動くのでコメントアウトしてます
//ヘッダーファイルの読み込み
#define TONE_USE_INT
#define TONE_PITCH 440
#include <TonePitch.h>
//ピンの定義
#define BUZZ_PIN 8
#define SW_PIN 2
//音階用の配列の宣言
int melody[] = {
NOTE_C4, //ド
NOTE_D4, //レ
NOTE_E4, //ミ
NOTE_F4, //ファ
NOTE_G4, //ソ
NOTE_A4, //ラ
NOTE_B4, //シ
NOTE_C5, //ド
};
void setup() {
pinMode( BUZZ_PIN, OUTPUT ); //出力ピンに設定
}
void loop() {
for(int i=0;i<8;i++){
tone(BUZZ_PIN, melody[i]); //音を鳴らす
delay(1000);
}
}
プログラムの検証と書き込み
プログラムが完成したら、Arduinoをパソコンとつなぎ、検証→書き込みを行います。
「✓マーク」を押す(検証)
問題なければ、「→マーク」を押す(書き込み)
書き込みが終わり、上手く回路とプログラムが作れていれば、一定のリズムで音階が鳴るはずです。
やりましたね!ここまでお疲れさまでした!
おわりに
いかがだったでしょうか。
もしこの記事がお役に立てたら、"スキ"をいただけると励みになります!
今回のポイントは、👇の通りです。
パッシブブザーに決まった周波数を加えると音が鳴る
音階(ド、レなど)は周波数が決まっている
tone();で音を鳴らす
delay();で音を伸ばす
最後までお読みいただき、ありがとうございました。
この記事が気に入ったらサポートをしてみませんか?