♪目次♪
今回は、ロボットの前に光センサーを2つ、しかも前向きに設置 これで光源の光を探知する。
task main(){ SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1を光センサーと定義 SetSensor(SENSOR_2,SENSOR_LIGHT); //センサー2を光センサーと定義 while(true) {if(SENSOR_1>43){OnRev(OUT_A);until(SENSOR_1<43);Off(OUT_A);}; //光が左からあたったとき、右の車輪を動かし、車体を右に if(SENSOR_2>43){OnFwd(OUT_C);until(SENSOR_2<43);Off(OUT_C);};}; //光が右からあたったとき、左の車輪を動かし、車体を左に }
☆試作の段階ではうまく光りに反応してくれる時とそうでない 時があったので、光センサーの値をいろいろと変えてみると 幾分よい具合になった。
task main(){ SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1を光センサーと定義 SetSensor(SENSOR_2,SENSOR_LIGHT); //センサー2を光センサーと定義 while(true) {if(SENSOR_1>55){OnRev(OUT_A);until(SENSOR_1<43);Off(OUT_A);}; //光が左からあたったとき、右の車輪を動かし、車体を右に if(SENSOR_2>55){OnFwd(OUT_C);until(SENSOR_2<43);Off(OUT_C);};}; //光が右からあたったとき、左の車輪を動かし、車体を左に }
#define Sol 196 #define Ra 220 #define Si 247 #define Do 262 //音の定義 task main() // 音楽を演奏するタスク { while (true) { PlayTone(Do,20); Wait(25); // Wait の時間の方を少し長くして PlayTone(Si,20); Wait(25); // 同じ音を続けて鳴らす場合にも PlayTone(Ra,40); Wait(45); // 一つの音にならないようにしている PlayTone(Do,20); Wait(25); PlayTone(Si,20); Wait(25); PlayTone(Ra,40); Wait(45); PlayTone(Do,20); Wait(25); PlayTone(Si,20); Wait(25); PlayTone(Ra,20); Wait(25); PlayTone(Sol,20); Wait(25); PlayTone(Ra,20); Wait(25); PlayTone(Si,20); Wait(25); PlayTone(Do,20); Wait(25); PlayTone(Si,20); Wait(25); PlayTone(Ra,40); Wait(45); } }
ゴジラのテーマらしく音の定義を低めの音に設定して迫力をだした!!
#define Sol 831 #define Ra 880 #define Si 988 #define Do 1047 #define Mi 1319 #define Fa 1397 #define Raa 1976 #define Soll 1661 //音の定義 task main() { while (true) { PlayTone(Sol,20); Wait(25); PlayTone(Ra,20); Wait(50); PlayTone(Si,20); Wait(25); PlayTone(Do,20); Wait(50); PlayTone(Sol,20); Wait(25); PlayTone(Ra,20); Wait(35); PlayTone(Si,20); Wait(25); PlayTone(Do,20); Wait(35); PlayTone(Fa,20); Wait(25); PlayTone(Mi,20); Wait(35); PlayTone(Do,20); Wait(25); PlayTone(Mi,20); Wait(35); PlayTone(Raa,20); Wait(25); PlayTone(Soll,80); Wait(90); } }
USBを使えない状況でつくったので音の長さや音程が確認できず、オンチなプログラムとなった。その後高いAの音を改善し、音の長さを改善し完成版となった。
#define Sol 831 #define Ra 880 #define Si 988 #define Do 1047 #define Mi 1319 #define Fa 1397 #define Raa 1760 #define Soll 1661 //音の定義 task main() { while (true) { PlayTone(Sol,20); Wait(25); PlayTone(Ra,20); Wait(100); PlayTone(Si,20); Wait(25); PlayTone(Do,20); Wait(100); PlayTone(Sol,20); Wait(25); PlayTone(Ra,20); Wait(35); PlayTone(Si,20); Wait(25); PlayTone(Do,20); Wait(35); PlayTone(Fa,20); Wait(25); PlayTone(Mi,20); Wait(35); PlayTone(Do,20); Wait(25); PlayTone(Mi,20); Wait(35); PlayTone(Raa,20); Wait(25); PlayTone(Soll,80); Wait(120); } }
#define Sol 196 #define Ra 220 #define Si 247 #define Do 262 #define Sola 831 #define Raa 880 #define Sia 988 #define Doa 1047 #define Mia 1319 #define Faa 1397 #define Raaa 1760 #define Solla 1661 //音の定義 task play_music2() { while(true) { PlayTone(Do,20); Wait(25); // Wait の時間の方を少し長くして PlayTone(Si,20); Wait(25); // 同じ音を続けて鳴らす場合にも PlayTone(Ra,40); Wait(45); // 一つの音にならないようにしている PlayTone(Do,20); Wait(25); PlayTone(Si,20); Wait(25); PlayTone(Ra,40); Wait(45); PlayTone(Do,20); Wait(25); PlayTone(Si,20); Wait(25); PlayTone(Ra,20); Wait(25); PlayTone(Sol,20); Wait(25); PlayTone(Ra,20); Wait(25); PlayTone(Si,20); Wait(25); PlayTone(Do,20); Wait(25); PlayTone(Si,20); Wait(25); PlayTone(Ra,40); Wait(45); } } task play_music1() //仕事:音楽を演奏する { while (true) { PlayTone(Sola,20); Wait(25); PlayTone(Raa,20); Wait(100); PlayTone(Sia,20); Wait(25); PlayTone(Doa,20); Wait(100); PlayTone(Sola,20); Wait(25); PlayTone(Raa,20); Wait(35); PlayTone(Sia,20); Wait(25); PlayTone(Doa,20); Wait(35); PlayTone(Faa,20); Wait(25); PlayTone(Mia,20); Wait(35); PlayTone(Doa,20); Wait(25); PlayTone(Mia,20); Wait(35); PlayTone(Raaa,20); Wait(25); PlayTone(Solla,80); Wait(120); //音の定義 } } int Light=0; int turn_time=90; task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); //ライトセンサーを左右にセットする ClearTimer(0); while(Timer(0)<=turn_time) { if(SENSOR_1>Light) { Light=SENSOR_1; //センサー1が反応 } OnFwd(OUT_A); //Aのモーターを前に OnRev(OUT_C); //Bのモーターを後ろに(車体を回転させる) } OnFwd(OUT_A); OnRev(OUT_C); start play_music1; //センサー1が反応するまで曲を流す until(SENSOR_1<Light); while(true) { if(SENSOR_1<Light) //センサー1反応 { OnFwd(OUT_A); //Aのモーターを前へ OnRev(OUT_C); //Cのモーターを後ろへ stop play_music1; //1つ目の曲を止める start play_music2; //2つ目の曲を流す until(SENSOR_1>=Light); } else { OnFwd(OUT_A+OUT_C); stop play_music2; //2つ目の曲を止める start play_music1; //センサー1の値をきるまで1の曲を流す until(SENSOR_1<Light); } } }
今回、一番見せたかったのはやはり音楽で、少し個性的な音楽を選んだ。時間を費やした分、自分なりにはとても出来がいいと思う。
光センサーに関するプログラミングがとても難しく、なかなか、思ったとおりに動いてくれなかった。自分の知識だけではできない所もあったので、友達から聞いたりして理解した。
動きはゆっくりだけどうまく動いた(笑) 光を追いかけるプログラムがよくなかったのかな(;→д←) 音楽をならすのはとてもよくできたと思う!! 曲によって音の高さを変えたところはよっかた♪懐中電灯とか光源の準備が出来なかった。あとメンバーが減ってしまったのが残念。。、
今回は、自宅でプログラムを作ったりがんばった!!どんどんレベルがあがってきて、正直パソコンをいじれない自分にとってはキツくなってきた。。。次はいよいよロボコン!! 今まで学んできたことを使って、いいロボットを作りたいと思う!!みんながんばろーぜ!!
曲を鳴らす事はロボコンとは直接関係は無いけど、光センサー のプログラミングは必須! 是非とも使いこなせるようにしたい。
気軽に書いて!!