Arudinoでファンファーレを鳴らそう
今回はAmazonで購入した Arudino Nano(互換) を使用して圧電スピーカで遊びます!
ただ音を鳴らすのではつまらないので、
FF(ファイナルファンタジー)というゲームのファンファーレの一部を抜粋して鳴らします。
楽譜に書き出すと、次のようになります。

次に楽譜の音を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に差し込んでください。

これで完了です!Arudinoに電源を入れると音楽が流れます!
音量調整をしたい場合は、12ピンとスピーカの+端子の間に抵抗を入れてください。
可変抵抗を入れると音量の調整がしやすいと思います。
以上です。最後までお読みいただきありがとうございました!