Arudinoでファンファーレを鳴らそう

今回はAmazonで購入した Arudino Nano(互換) を使用して圧電スピーカで遊びます!

ただ音を鳴らすのではつまらないので、
FF(ファイナルファンタジー)というゲームのファンファーレの一部を抜粋して鳴らします。

楽譜に書き出すと、次のようになります。

f:id:ADcustomize:20210724192243p:plain
FF-fanfare( excerpt)


 次に楽譜の音をArudinoのプログラムに起こします。

#define BEATTIME 500 //音を出している時間(msec)
#define SPEAKER 12 //スピーカーの出力ピン番号

void setup() {}

//音の名前(変数)と周波数を設定
float z (){tone(SPEAKER,0,BEATTIME);} //無音(音が連続しないようにする)
float ra (){tone(SPEAKER,415.3,BEATTIME) ;}  //ラ♭
float si (){tone(SPEAKER,466.2,BEATTIME) ;}  //シ♭
float do (){tone(SPEAKER,523.23,BEATTIME) ;}  //ド


void loop() {
do();delay(BEATTIME/3) ;z();delay(BEATTIME/100) ;  //BEATTIME÷3で3連符を表現
do();delay(BEATTIME/3) ;z();delay(BEATTIME/100) ;  //BEATTIME÷100で音と音の間に間隔をあける
do();delay(BEATTIME/3) ;z();delay(BEATTIME/100) ;

do();delay(BEATTIME) ;z();delay(BEATTIME/100) ;  //4分音符はBEATTIMEそのまま
ra();delay(BEATTIME) ;z();delay(BEATTIME/100) ;  
si();delay(BEATTIME) ;z();delay(BEATTIME/100) ;

do();delay(BEATTIME/3) ;z();delay(BEATTIME/100) ;
z();delay(BEATTIME/3) ;z();delay(BEATTIME/100) ;
si();delay(BEATTIME/3) ;z();delay(BEATTIME/100) ;

do();delay(BEATTIME*3) ;z();delay(BEATTIME/100) ;  //付点2分音符はBEATTIME×3で表現

delay(BEATTIME*10) ;  //ループ再生の間隔をあける
}

これをArudinoのマイコンに書き込んでください。

Arudinoの12ピンに圧電スピーカの+端子を差し込み、-端子はGNDに差し込んでください。

f:id:ADcustomize:20210724193906j:plain
Arudino-Speaker


これで完了です!Arudinoに電源を入れると音楽が流れます!

音量調整をしたい場合は、12ピンとスピーカの+端子の間に抵抗を入れてください。
可変抵抗を入れると音量の調整がしやすいと思います。


以上です。最後までお読みいただきありがとうございました!