第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); }
このプログラムと回路では、ボタンを押したら曲を最初から流すという処理はありません。
曲の途中から流れますが、今はこれでいいでしょう。
曲当てクイズ
さあ、ボタンを押します。
正解するでしょうか・・・?
簡単でした。
いくつか曲を用意して、書き換えて遊ぶこともできるでしょう。
次回は、いよいよセンサーを使います。