2006a/A5/課題3左 もくじ
ロボット名;ロボコンキラー 特徴;無意味についた左右のはさみ
今回のロボットの製作に関して、まず何の音楽 にするかという 点で少しもめました。単純な曲にするか、複雑な曲にするか で意見が分かれました。しかし最終的にはみんなが親しみを持てる音楽にする という方向できまり、[カエルの歌][チャルメラ]に決まりました。どちらもみんなが 子供の頃に聞いたであろう懐かしい曲です。しかし!曲がなって欲しい時に鳴ってく れないという事態も発生し、そのせいで僕たちはかなり苦しめられました。それで、今度は曲が上手に鳴ると今度は光を追いかけないという問題が発生してまたプログラムの改良の繰り返し、ようやくちゃんと光を追いかけかつ曲が鳴るべき時に鳴るちゃんとしたプログラムが完成した。 そして、なんとか無事に今日を迎えることができました!
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);}}} // その方向に前進
2.光源を見失っていないときにはある曲を演奏し、見失った時には別の曲を演奏しながら光源を探す (作成者 サット&和知)
#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>34 || SENSOR_3>34) // 光源を認識したら { start move_music; // 動いているときの音楽をならす while (SENSOR_1>34 || SENSOR_3>34) // どちらかのセンサーが光源を認識してる限り { 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<=34 && SENSOR_3<=34) // どちらのセンサーも光源を認識できない限り { 音楽をならし旋回する Wait(1); } stop search_music; // 光源を認識できたら探しているときの音楽を止める } }
最初はタイマーを使っていたが、何故かうまくいかなかったので(多分タイマーの設定がうまくいかなかったのだろう)、光センサーを1 or2個使って光を覆うようにしたのが工夫したところです。これによりタイマーを使わず、光の明るさだけですべてを判断して動くことが可能になりました!
今回は今までと違いロボットには手こずらなかったが、プログラミングはすごく難しくて、時間がものすごくかかった。一応完成はしたが自分では気づいていない不完全な部分があるかもしれない。しかしみんなで頑張って作った最高の作品だと僕たちは思っています。そして今までやってきた知識を総動員してロボコン制覇に向けて頑張っていきたいと思っております。