ドレミの歌に合わせてLEDが光るおもちゃ
☀☀☀ はじまり ☀☀☀
インターンシップ中の学生二人です。
初めてarduinoを使って簡単なおもちゃを作ってみました。
スイッチを押せば、ドレミの歌に合わせて4つのLEDがカラフルに光ります。
材料
・arduino本体 ・抵抗 ・ジャンプワイヤー
・PC ・スイッチ ・圧電ブザー
・ブレッドボード ・LED
過程
曲の1音1音に合わせて、LEDが順番に光るように設定したので、とても長いスケッチになりました。(笑)
まずは音と同時にLEDを光らせるところでつまずきました。そこで、音を伸ばす時間(delay)を0にして、音が鳴り終わるまでにLEDを光らせることに成功しました。また、音と音との間隔をLEDを光らせる時間(delay)で調節しながら、メロディーを作ることも難しかったです。ちなみに、void setupの部分でLEDの接続をpinModeで宣言しておくと、LEDの明るさが増すことが分かりました。そして、一番試行錯誤を重ねたのは、最後の”ランランラン”の部分です。同時に全てのLEDを光らすために、音の(delay)とLEDの(delay)を微調整しながら、時間をかけて一番よい具合に仕上げることができたと思います。
電子回路では、arduino本体のGNDの数が限られているので、ブレッドボードのマイナスを利用して、つなぎました。
途中で圧電ブザーが壊れるハプニングがあり、買い出しに行きました。(笑)
電子回路の接続図
ドレミの歌
ドはドーナツのド
レは レモンのレ
ミはみんなのミ
ファはファイトのファ
ソは青いそら
ラはラッパのラ
シはしあわせよ
さあ歌いましょう
ランランラン
スケッチ
*圧電ブザーを鳴らす場合「tone」関数を使います。
tone(ピン番号,鳴らす音,音の長さ)
↓
ド:262 レ:294 ミ:330 ファ:349 ソ:392
ラ:440 シ:494 高いド:523 シ♭:466
int pin = 13; // ブザーを接続したピン番号
int state = 0 ;
void setup() {
pinMode(10,OUTPUT);
pinMode(8,OUTPUT);
pinMode(7,OUTPUT);
pinMode(2,OUTPUT);
pinMode(3,INPUT);
}
void loop() {
state = digitalRead(3); //スイッチ
if(state == 0){
tone(pin,262,200) ; // ド
delay(0) ; // 音がなっている間待機
digitalWrite(10,HIGH);
delay(600);
digitalWrite(10,LOW);
delay(10);
tone(pin,294,200) ; // レ
delay(0) ;
digitalWrite(8,HIGH);
delay(200);
digitalWrite(8,LOW);
delay(10);
tone(pin,330,200) ; // ミ
delay(0) ;
digitalWrite(7,HIGH);
delay(500);
digitalWrite(7,LOW);
delay(10);
tone(pin,262,200) ; // ド
delay(0) ;
digitalWrite(2,HIGH);
delay(200);
digitalWrite(2,LOW);
delay(10);
tone(pin,330,200) ; // ミ
delay(0) ;
digitalWrite(10,HIGH);
delay(400);
digitalWrite(10,LOW);
delay(10);
tone(pin,262,200) ; // ド
delay(0) ;
digitalWrite(8,HIGH);
delay(400);
digitalWrite(8,LOW);
delay(10);
tone(pin,330,200) ; // ミ
delay(0) ;
digitalWrite(7,HIGH);
delay(600);
digitalWrite(7,LOW);
delay(10);
tone(pin,294,200) ; // レ
delay(0) ;
digitalWrite(2,HIGH);
delay(600);
digitalWrite(2,LOW);
delay(10);
tone(pin,330,200) ; // ミ
delay(0) ;
digitalWrite(10,HIGH);
delay(200);
digitalWrite(10,LOW);
delay(10);
tone(pin,349,200) ; // ファ
delay(0) ;
digitalWrite(8,HIGH);
delay(200);
digitalWrite(8,LOW);
delay(10);
tone(pin,349,200) ; // ファ
delay(0) ;
digitalWrite(7,HIGH);
delay(200);
digitalWrite(7,LOW);
delay(10);
tone(pin,330,200) ; // ミ
delay(0) ;
digitalWrite(2,HIGH);
delay(200);
digitalWrite(2,LOW);
delay(10);
tone(pin,294,200) ; // レ
delay(0) ;
digitalWrite(10,HIGH);
delay(200);
digitalWrite(10,LOW);
delay(10);
tone(pin,349,200) ; // ファ
delay(0) ;
digitalWrite(8,HIGH);
delay(1200);
digitalWrite(8,LOW);
delay(10);
tone(pin,330,200) ; // ミ
delay(0) ;
digitalWrite(7,HIGH);
delay(600);
digitalWrite(7,LOW);
delay(10);
tone(pin,349,200) ; // ファ
delay(0) ;
digitalWrite(2,HIGH);
delay(200);
digitalWrite(2,LOW);
delay(10);
tone(pin,392,200) ; // ソ
delay(0) ;
digitalWrite(10,HIGH);
delay(500);
digitalWrite(10,LOW);
delay(10);
tone(pin,330,200) ; // ミ
delay(0) ;
digitalWrite(8,HIGH);
delay(200);
digitalWrite(8,LOW);
delay(10);
tone(pin,392,200) ; // ソ
delay(0) ;
digitalWrite(7,HIGH);
delay(400);
digitalWrite(7,LOW);
delay(10);
tone(pin,330,200) ; // ミ
delay(0) ;
digitalWrite(2,HIGH);
delay(400);
digitalWrite(2,LOW);
delay(10);
tone(pin,392,200) ; // ソ
delay(0) ;
digitalWrite(10,HIGH);
delay(600);
digitalWrite(10,LOW);
delay(10);
tone(pin,349,200) ; // ファ
delay(0) ;
digitalWrite(8,HIGH);
delay(600);
digitalWrite(8,LOW);
delay(10);
tone(pin,392,200) ; // ソ
delay(0) ;
digitalWrite(7,HIGH);
delay(200);
digitalWrite(7,LOW);
delay(10);
tone(pin,440,200) ; // ラ
delay(0) ;
digitalWrite(2,HIGH);
delay(200);
digitalWrite(2,LOW);
delay(10);
tone(pin,440,200) ; // ラ
delay(0) ;
digitalWrite(10,HIGH);
delay(200);
digitalWrite(10,LOW);
delay(10);
tone(pin,392,200) ; // ソ
delay(0) ;
digitalWrite(8,HIGH);
delay(200);
digitalWrite(8,LOW);
delay(10);
tone(pin,349,200) ; // ファ
delay(0) ;
digitalWrite(7,HIGH);
delay(200);
digitalWrite(7,LOW);
delay(10);
tone(pin,440,200) ; // ラ
delay(0) ;
digitalWrite(2,HIGH);
delay(1200);
digitalWrite(2,LOW);
delay(10);
tone(pin,392,200) ; // ソ
delay(0) ;
digitalWrite(10,HIGH);
delay(600);
digitalWrite(10,LOW);
delay(10);
tone(pin,262,200) ; // ド
delay(0) ;
digitalWrite(8,HIGH);
delay(200);
digitalWrite(8,LOW);
delay(10);
tone(pin,294,200) ; // レ
delay(0) ;
digitalWrite(7,HIGH);
delay(200);
digitalWrite(7,LOW);
delay(10);
tone(pin,330,200) ; // ミ
delay(0) ;
digitalWrite(2,HIGH);
delay(200);
digitalWrite(2,LOW);
delay(10);
tone(pin,349,200) ; // ファ
delay(0) ;
digitalWrite(10,HIGH);
delay(200);
digitalWrite(10,LOW);
delay(10);
tone(pin,392,200) ; // ソ
delay(0) ;
digitalWrite(8,HIGH);
delay(200);
digitalWrite(8,LOW);
delay(10);
tone(pin,440,200) ; // ラ
delay(0) ;
digitalWrite(7,HIGH);
delay(1200);
digitalWrite(7,LOW);
delay(10);
tone(pin,440,200) ; // ラ
delay(0) ;
digitalWrite(2,HIGH);
delay(600);
digitalWrite(2,LOW);
delay(10);
tone(pin,294,200) ; // レ
delay(0) ;
digitalWrite(10,HIGH);
delay(200);
digitalWrite(10,LOW);
delay(10);
tone(pin,330,200) ; // ミ
delay(0) ;
digitalWrite(8,HIGH);
delay(200);
digitalWrite(8,LOW);
delay(10);
tone(pin,349,200) ; // ファ
delay(0) ;
digitalWrite(7,HIGH);
delay(200);
digitalWrite(7,LOW);
delay(10);
tone(pin,392,200) ; // ソ
delay(0) ;
digitalWrite(2,HIGH);
delay(200);
digitalWrite(2,LOW);
delay(10);
tone(pin,440,200) ; // ラ
delay(0) ;
digitalWrite(10,HIGH);
delay(200);
digitalWrite(10,LOW);
delay(10);
tone(pin,494,200) ; // シ
delay(0) ;
digitalWrite(8,HIGH);
delay(1200);
digitalWrite(8,LOW);
delay(10);
tone(pin,494,200) ; // シ
delay(0) ;
digitalWrite(7,HIGH);
delay(600);
digitalWrite(7,LOW);
delay(10);
tone(pin,330,200) ; // ミ
delay(0) ;
digitalWrite(2,HIGH);
delay(200);
digitalWrite(2,LOW);
delay(10);
tone(pin,349,200) ; // ファ
delay(0) ;
digitalWrite(10,HIGH);
delay(200);
digitalWrite(10,LOW);
delay(10);
tone(pin,392,200) ; // ソ
delay(0) ;
digitalWrite(8,HIGH);
delay(200);
digitalWrite(8,LOW);
delay(10);
tone(pin,440,200) ; // ラ
delay(0) ;
digitalWrite(7,HIGH);
delay(200);
digitalWrite(7,LOW);
delay(10);
tone(pin,494,200) ; // シ
delay(0) ;
digitalWrite(2,HIGH);
delay(200);
digitalWrite(2,LOW);
delay(10);
tone(pin,523,200) ; // ド
delay(0) ;
digitalWrite(10,HIGH);
delay(1200);
digitalWrite(10,LOW);
delay(10);
tone(pin,494,200) ; // シ
delay(0) ;
digitalWrite(8,HIGH);
delay(200);
digitalWrite(8,LOW);
delay(10);
tone(pin,466,200) ; // シ♭
delay(0) ;
digitalWrite(7,HIGH);
delay(200);
digitalWrite(7,LOW);
delay(10);
tone(pin,440,200) ; // ラ
delay(0) ;
digitalWrite(2,HIGH);
delay(400);
digitalWrite(2,LOW);
delay(10);
tone(pin,349,200) ; // ファ
delay(0) ;
digitalWrite(10,HIGH);
delay(400);
digitalWrite(10,LOW);
delay(10);
tone(pin,494,200) ; // シ
delay(0) ;
digitalWrite(8,HIGH);
delay(400);
digitalWrite(8,LOW);
delay(10);
tone(pin,392,200) ; // ソ
delay(0) ;
digitalWrite(7,HIGH);
delay(400);
digitalWrite(7,LOW);
delay(10);
tone(pin,523,200) ; // ド
delay(0) ;
digitalWrite(2,HIGH);
delay(1200);
digitalWrite(2,LOW);
delay(10);
tone(pin,262,200) ; // ド
delay(0) ;
digitalWrite(10,HIGH);
delay(200);
digitalWrite(10,LOW);
delay(10);
tone(pin,294,200) ; // レ
delay(0) ;
digitalWrite(8,HIGH);
delay(200);
digitalWrite(8,LOW);
delay(10);
tone(pin,330,200) ; // ミ
delay(0) ;
digitalWrite(7,HIGH);
delay(200);
digitalWrite(7,LOW);
delay(10);
tone(pin,349,200) ; // ファ
delay(0) ;
digitalWrite(2,HIGH);
delay(200);
digitalWrite(2,LOW);
delay(10);
tone(pin,392,200) ; // ソ
delay(0) ;
digitalWrite(10,HIGH);
delay(200);
digitalWrite(10,LOW);
delay(10);
tone(pin,440,200) ; // ラ
delay(0) ;
digitalWrite(8,HIGH);
delay(200);
digitalWrite(8,LOW);
delay(10);
tone(pin,494,200) ; // シ
delay(0) ;
digitalWrite(7,HIGH);
delay(200);
digitalWrite(7,LOW);
delay(10);
tone(pin,523,200) ; // ド
delay(0) ;
digitalWrite(10,HIGH);
delay(0);
digitalWrite(8,HIGH);
delay(0);
digitalWrite(7,HIGH);
delay(0);
digitalWrite(2,HIGH);
delay(400);
digitalWrite(10,LOW);
delay(0);
digitalWrite(8,LOW);
delay(0);
digitalWrite(7,LOW);
delay(0);
digitalWrite(2,LOW);
delay(70);
tone(pin,392,200) ; // ソ
delay(0) ;
digitalWrite(10,HIGH);
delay(0);
digitalWrite(8,HIGH);
delay(0);
digitalWrite(7,HIGH);
delay(0);
digitalWrite(2,HIGH);
delay(400);
digitalWrite(10,LOW);
delay(0);
digitalWrite(8,LOW);
delay(0);
digitalWrite(7,LOW);
delay(0);
digitalWrite(2,LOW);
delay(70);
tone(pin,523,200) ; // ド
delay(0) ;
digitalWrite(10,HIGH);
delay(0);
digitalWrite(8,HIGH);
delay(0);
digitalWrite(7,HIGH);
delay(0);
digitalWrite(2,HIGH);
delay(1200);
digitalWrite(10,LOW);
delay(0);
digitalWrite(8,LOW);
delay(0);
digitalWrite(7,LOW);
delay(0);
digitalWrite(2,LOW);
delay(70);
}
}
感想
スイッチを押せば、ドレミの歌がスタートする仕組みを作るのに一番苦労しました。そのために、ちょっと回路やスケッチを変えただけで音が鳴らなくなったり、LEDが光らなくなったり(笑)
でも最後には無事にワンタッチで動くおもちゃが完成しました!◎
⇩ 動画をyoutubeに掲載しています。⇩
☆☆☆ おわり ☆☆☆