♪目次♪ #contents *課題3の内容・ロボット [#g992e50a] +光を感知しその光源を追っかける。その際 ゴジラのテーマ曲を流す。 +次に光源を見失った場合、車体を回転させ 光を探す。その時はピンクパンサーの曲を流す。 +以上、追撃、探索で2つの曲を使い分けて光を追いかけるロボット *光を追いかけるプログラム (試作) 作成者:ガリ[#efab6ddb] 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);};}; //光が右からあたったとき、左の車輪を動かし、車体を左に } ☆試作の段階ではうまく光りに反応してくれる時とそうでない 時があったので、光センサーの値をいろいろと変えてみると 幾分よい具合になった。 *光を追いかけるプログラム (完成版) 作成者:ガリ[#d646a718] 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);};}; //光が右からあたったとき、左の車輪を動かし、車体を左に } *プログラム(♪ゴジラ) 作成者:ガリ[#u93d437d] #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); } } *工夫した点(♪ゴジラ) [#s1059386] ゴジラのテーマらしく音の定義を低めの音に設定して迫力をだした!! *プログラム(♪ピンクパンサーのテーマ)試作 作成者:ガリ[#a514820b] #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); } } *プログラム(♪ピンク)改善点 [#baaa2175] USBを使えない状況でつくったので音の長さや音程が確認できず、オンチなプログラムとなった。その後高いAの音を改善し、音の長さを改善し完成版となった。 *プログラム(♪ピンクパンサーのテーマ)完成版 作成者:ガリ[#k1632f18] #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); } } *プログラム(曲を分けて明るい方へ進む) 作成者:ガリ[#e278f086] #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); } } } *工夫したところ [#p4ed4ed0] 今回、一番見せたかったのはやはり音楽で、少し個性的な音楽を選んだ。時間を費やした分、自分なりにはとても出来がいいと思う。 *苦労したところ [#j95fd5f6] 光センサーに関するプログラミングがとても難しく、なかなか、思ったとおりに動いてくれなかった。自分の知識だけではできない所もあったので、友達から聞いたりして理解した。 *反省点 [#g77d3e49] 動きはゆっくりだけどうまく動いた(笑) 光を追いかけるプログラムがよくなかったのかな(;→д←) 音楽をならすのはとてもよくできたと思う!! 曲によって音の高さを変えたところはよっかた♪懐中電灯とか光源の準備が出来なかった。あとメンバーが減ってしまったのが残念。。、 *感想 [#lb4436b8] 今回は、自宅でプログラムを作ったりがんばった!!どんどんレベルがあがってきて、正直パソコンをいじれない自分にとってはキツくなってきた。。。次はいよいよロボコン!! 今まで学んできたことを使って、いいロボットを作りたいと思う!!みんながんばろーぜ!! *次回へ向けて [#ad3f6ba9] 曲を鳴らす事はロボコンとは直接関係は無いけど、光センサー のプログラミングは必須! 是非とも使いこなせるようにしたい。 *ロボゼミ仲間からのコメント [#bdb30c22] 気軽に書いて!! #comment