曲当てクイズ

第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);
}

このプログラムと回路では、ボタンを押したら曲を最初から流すという処理はありません。

曲の途中から流れますが、今はこれでいいでしょう。

曲当てクイズ

さあ、ボタンを押します。

正解するでしょうか・・・?

簡単でした。

いくつか曲を用意して、書き換えて遊ぶこともできるでしょう。

 

次回は、いよいよセンサーを使います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)