第5回 IoT×プログラミング教育
電圧スピーカーを使ってメロディーを流し、子供に何の曲かを当ててもらいます。
メロディーをプログラム
回路は前回と変わりません。
プログラムだけ、書き換えます。
ドレミのメロディーの出し方は、「Arduinoの動かせ方入門」を参考とさせていただきました。
メロディーを流すには、tone()を使います。
tone( ピン番号 , ドレミの番号 , 音の長さ );
第1引数はピン番号。
電圧スピーカーにつながっているピン番号のことです。今回使う回路では10を使っています。
第2引数はドレミの番号。(周波数に関係する数字?)
262・・・ド
294・・・レ
330・・・ミ
349・・・ファ
392・・・ソ
440・・・ラ
494・・・シ
523・・・ド
と、なっています。
第3引数は音の長さ。
今回は四分音符を600(0.6秒)としています。
それでは、私が暗記している楽譜をプログラミングします。
void loop(){
#define PIN 10
#define BEAT 600 //音の長さ
void setup(){
pinMode(PIN, OUTPUT);
}
void loop(){
tone(PIN,262,BEAT); //ド
delay(BEAT);
tone(PIN,294,BEAT); //レ
delay(BEAT);
tone(PIN,330,BEAT); //ミ
delay(BEAT);
tone(PIN,349,BEAT); //ファ
delay(BEAT);
tone(PIN,330,BEAT); //ミ
delay(BEAT);
tone(PIN,294,BEAT); //レ
delay(BEAT);
tone(PIN,262,BEAT); //ド
delay(BEAT*2);
tone(PIN,330,BEAT); //ミ
delay(BEAT);
tone(PIN,349,BEAT); //ファ
delay(BEAT);
tone(PIN,392,BEAT); //ソ
delay(BEAT);
tone(PIN,440,BEAT); //ラ
delay(BEAT);
tone(PIN,392,BEAT); //ソ
delay(BEAT);
tone(PIN,349,BEAT); //ファ
delay(BEAT);
tone(PIN,330,BEAT); //ミ
delay(BEAT*2);
tone(PIN,262,BEAT); //ド
delay(BEAT*2);
tone(PIN,262,BEAT); //ド
delay(BEAT*2);
tone(PIN,262,BEAT); //ド
delay(BEAT*2);
tone(PIN,262,BEAT); //ド
delay(BEAT*2);
tone(PIN,262,BEAT/2); //ド
delay(BEAT/2);
tone(PIN,262,BEAT/2); //ド
delay(BEAT/2);
tone(PIN,294,BEAT/2); //レ
delay(BEAT/2);
tone(PIN,294,BEAT/2); //レ
delay(BEAT/2);
tone(PIN,330,BEAT/2); //ミ
delay(BEAT/2);
tone(PIN,330,BEAT/2); //ミ
delay(BEAT/2);
tone(PIN,349,BEAT/2); //ファ
delay(BEAT/2);
tone(PIN,349,BEAT/2); //ファ
delay(BEAT/2);
tone(PIN,330,BEAT); //ミ
delay(BEAT);
tone(PIN,294,BEAT); //レ
delay(BEAT);
tone(PIN,262,BEAT); //ド
delay(BEAT*2);
}
このプログラムと回路では、ボタンを押したら曲を最初から流すという処理はありません。
曲の途中から流れますが、今はこれでいいでしょう。
曲当てクイズ
さあ、ボタンを押します。
正解するでしょうか・・・?
簡単でした。
いくつか曲を用意して、書き換えて遊ぶこともできるでしょう。
次回は、いよいよセンサーを使います。