[[2006a/A5/課題3左]] もくじ #contents *課題3 光を追いかけるロボット [#qfbdc580] **制作者 ヤマヒロ トラ 和知 サット [#v314ce0e] **ロボットの外観 [#jcc23f5e] **経緯 [#t3cbad0c] 今回のロボットの製作に関して、まず何の音楽 にするかという 点で少しもめました。単純な曲にするか、複雑な曲にするか で意見が分かれました。しかし最終的にはみんなが親しみを持てる音楽にする という方向できまり、[カエルの歌][チャルメラ]に決まりました。どちらもみんなが 子供の頃に聞いたであろう懐かしい曲です。しかし!曲がなって欲しい時に鳴ってく れないという事態も発生し、そのせいで僕たちはかなり苦しめられました。 しかし!メンバーでそのことについて討論した結果簡単に打開法が見つかり なんとか無事に今日を迎えることができました! [#we283569] **プログラム [#jcfa8df6] 1.光源を見失ったときはには曲を演奏しながら旋回して光源を探す。 (作成者;トラ、ヤマヒロ) #define DO 523 #define RE 587 #define MI 659 #define FA 698 #define SOL 784 #define LA 880 task play_music(){while (true){ PlayTone(DO,25); Wait(30); PlayTone(RE, 25); Wait(30); PlayTone(MI,25); Wait(30); PlayTone(FA,25); Wait(30); PlayTone(MI,25); Wait(30); PlayTone(RE,25); Wait(30); PlayTone(DO,35); Wait(50); PlayTone(MI,25); Wait(30); PlayTone(FA,25); Wait(30); PlayTone(SOL,25); Wait(30); PlayTone(LA,25); Wait(30); PlayTone(SOL,25); Wait(30); PlayTone(FA,25); Wait(30); PlayTone(MI,30); Wait(50); PlayTone(DO,50); Wait(55); PlayTone(DO,50); Wait(55); PlayTone(DO,50); Wait(55); PlayTone(DO,50); Wait(70); PlayTone(DO,25); Wait(30); PlayTone(DO,25); Wait(30); PlayTone(RE,25); Wait(30); PlayTone(RE,25); Wait(30); PlayTone(MI,25); Wait(30); PlayTone(MI,25); Wait(30); PlayTone(FA,25); Wait(30); PlayTone(FA,25); Wait(30); PlayTone(MI,50); Wait(55); PlayTone(RE,50); Wait(55); PlayTone(DO,50); Wait(55); }} task main() {SetSensor(SENSOR_1,SENSOR_LIGHT); while (true){start play_music; while(SENSOR_1>40){ OnRev(OUT_C);OnFwd(OUT_A);} while(SENSOR_1<40){ stop play_music; OnFwd(OUT_A+OUT_C);}}} 1.光源を見失ったときには曲を演奏しながら旋回して光源を探す。 (作成者 サット&和知) #define Do 523 #define Le 587 #define Mi 659 #define Fa 698 #define So 784 #define Ra 880 #define Si 988 task move_music() { while (true) { PlayTone(So,20); Wait(22); // チャルメラ♪ PlayTone(Ra,20); Wait(22); PlayTone(Si,60); Wait(62); PlayTone(Ra,20); Wait(22); PlayTone(So,20); Wait(42); PlayTone(So,20); Wait(22); PlayTone(Ra,20); Wait(22); PlayTone(Si,20); Wait(22); PlayTone(Ra,20); Wait(22); PlayTone(So,20); Wait(22); PlayTone(Ra,60); Wait(62); Wait(40); } } task search_music() { while (true) { PlayTone(Do,10); Wait(12); // 音階 ドミレファ… PlayTone(Mi,10); Wait(12); PlayTone(Le,10); Wait(12); PlayTone(Fa,10); Wait(12); PlayTone(Mi,10); Wait(12); PlayTone(So,10); Wait(12); PlayTone(Fa,10); Wait(12); PlayTone(Ra,10); Wait(12); Wait(20); } } task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); // センサー1がセ光センサーであることを宣言 SetSensor(SENSOR_3,SENSOR_LIGHT); // センサー3がセ光センサーであることを宣言 while (true) { if(SENSOR_1>40 || SENSOR_3>40) // 光源を認識したら { start move_music; // 動いているときの音楽をならす while (SENSOR_1>40 || SENSOR_3>40) // どちらかのセンサーが光源を認識してる限り { if(SENSOR_1>=SENSOR_3) // 左が明るかったら左へ { OnFwd(OUT_C);Off(OUT_A); } if(SENSOR_1<=SENSOR_3) // 右が明るかったら右へ { OnFwd(OUT_A);Off(OUT_C); } } stop move_music; // 動いているときの音楽を止める } } else { start search_music; // 探しているときの音楽をならす while (SENSOR_1<=40 && SENSOR_3<=40) // どちらのセンサーも光源を認識できない限り { 音楽をならし旋回する Wait(1); } stop search_music; // 探しているときの音楽を止める } } **工夫した点 [#m5002674] 最初はタイマーを使っていたが、何故かうまくいかなかったので、光センサーを2個使って光を覆うようにしたのが工夫したところです。これによりタイマーを使わず、光の明るさだけですべてを判断して動くことが可能になりました! **難しかった点 [#j90070e7] 第1にプログラミングが全く思いつかなかったのが一番難しかった点です!最初はタイマーを使っていましたが、全くうまくいきませんでした!第2に曲をループ再生にするプログラムを組むと、何故か曲の出だしの音しか流れないという難点がありました。第3に曲を作ること自体が相当難しかったです。微妙な間隔などをプログラミングすることが非常に難しく骨が折れそうでした。 **感想&反省 [#y625fea8] 今回は今までと違いロボットには手こずらなかったが、プログラミングはすごく難しくて、時間がものすごくかかった。一応完成はしたが自分では気づいていない不完全な部分があるかもしれない。しかしみんなで頑張って作った最高の作品だと僕たちは思っています。そして今までやってきた知識を総動員してロボコン制覇に向けて頑張っていきたいと思っております。 #comment