2012a/Member

目次

課題2 ライントレースをするロボット

コース作成の条件

・四つの出口を作る。

・交差点を二つ作る。

・直角カーブを作る。

・ヘアピンカーブを作る。

この中で特に苦しんだのは直角カーブと交差点でしょうか。

ルール

出口のうちの一つから入り一周半して反対側の出口から出る。

では、それぞれの紹介を始めて行きたいと思います。

コースの紹介

コース.JPG 書くときに特に予定も立てず、勢いでやってしまったのがこの課題での最大のミスでしょうか。

このコースでの問題点をあげるなら、

・直角カーブが100度くらいある。

・交差点が直行していない。

・ヘアピンカーブが反り返りすぎている。

・入り口がT字ではなく横向きのY字などの歪な形

などなど高難易度のコースとなっています。

ロボット紹介

ロボットは何段階かに分けて進化していっています。

まずはver.1から

P1000063.jpg 横からの写真 剥き出しのギアは全バージョンに共通する特徴です。

正面から.jpg 正面から

裏返し.jpg 裏返した状態 中心の青いものがセンサーで、ロボットの中心についています

ver.1は試作品となっておりとりあえずどのように作るか、

を考えるために組んでおり、すこし脆くなっていたり、センサーが一つしかなかったりします。

プログラム紹介

#define THRESHOLD 45 //閾値
#define go_st OnFwd(OUT_A+OUT_C);
#define go_le1 Off(OUT_A); OnFwd(OUT_C); OnRev(OUT_A);
#define go_ri1 Off(OUT_C); OnFwd(OUT_A); OnRev(OUT_C);
#define go_le2 SetPower(OUT_A,2); SetPower(OUT_C,0);Off(OUT_A); OnFwd(OUT_C); OnRev(OUT_A);
#define go_ri2 SetPower(OUT_A,0); SetPower(OUT_C,2);Off(OUT_C); OnFwd(OUT_A); OnRev(OUT_C);
#define go_le3 SetPower(OUT_A,2); SetPower(OUT_C,0);Off(OUT_A); OnFwd(OUT_C); OnRev(OUT_A);
#define go_ri3 SetPower(OUT_A,4); SetPower(OUT_C,1);Off(OUT_C); OnFwd(OUT_A); OnRev(OUT_C);
#define t_overa 1170
#define t_overb 1380
#define t_overc 1700
#define t_overd 2750
#define t_overe 3500
#define t_overf 3800
#define t_overg 4700
task main()
{ 
     ClearTimer(0);                                //タイマーリセット

     SetPower(OUT_A,0);
     SetPower(OUT_C,0);

     SetSensor(SENSOR_1, SENSOR_LIGHT);
     SetSensor(SENSOR_3, SENSOR_LIGHT);
     int cross = 0;                                            //両方黒になった 回数をカウント
 while(true){                                        //百回きたら止める。
          if(SENSOR_1<THRESHOLD&&SENSOR_3<THRESHOLD){          //両方黒線の上に いるとき
             SetPower(OUT_A,0);
             SetPower(OUT_C,0);
             go_st;
             cross++;                                          //カウントする





          }else if(SENSOR_1>THRESHOLD && SENSOR_3<THRESHOLD && FastTimer(0)<=t_overa){       //3だけ黒線の上にあるとき
             PlaySound(SOUND_CLICK);
             go_st;
             Wait(5);
             SetPower(OUT_A,0);
             SetPower(OUT_C,4);
             go_ri1;
             
          }else if(SENSOR_1<THRESHOLD && SENSOR_3>THRESHOLD && FastTimer(0)<=t_overa){       //1だけ黒線の上にある時
             PlaySound(SOUND_CLICK);
             go_st
             Wait(5);
             SetPower(OUT_A,4);
             SetPower(OUT_C,0);
             go_le1;
             
             




           }else if(SENSOR_1>THRESHOLD && SENSOR_3<THRESHOLD && FastTimer(0)>t_overa && FastTimer(0)<=t_overb){       //1だけ黒線の上にあるとき
             PlaySound(SOUND_UP) ;
             
             go_ri3;


           }else if(SENSOR_1<THRESHOLD && SENSOR_3>THRESHOLD && FastTimer(0)>t_overa && FastTimer(0)<=t_overb){       //3だけ黒線の上にある時
             PlaySound(SOUND_UP) ;
             SetPower(OUT_A,0);
             SetPower(OUT_C,0);
             go_le3;

           




          }else if(SENSOR_1>THRESHOLD && SENSOR_3<THRESHOLD &&  FastTimer(0)>t_overb && FastTimer(0)<=t_overc){       //3だけ黒線の上にあるとき
             PlaySound(SOUND_CLICK);
             go_st;
             Wait(5);
             SetPower(OUT_A,0);
             SetPower(OUT_C,4);
             go_ri1;
             
          }else if(SENSOR_1<THRESHOLD && SENSOR_3>THRESHOLD && FastTimer(0)>t_overb && FastTimer(0)<=t_overc){       //1だけ黒線の上にある時
             PlaySound(SOUND_CLICK);
             go_st
             Wait(5);
             SetPower(OUT_A,4);
             SetPower(OUT_C,0);
             go_le1;

PlaySound(SOUND_UP) ;




           }else if(SENSOR_1>THRESHOLD && SENSOR_3<THRESHOLD && FastTimer(0)>t_overc && FastTimer(0)<=t_overd){       //1だけ黒線の上にあるとき
             PlaySound(SOUND_UP) ;
             SetPower(OUT_A,0);
             SetPower(OUT_C,0);
             go_ri2;


           }else if(SENSOR_1<THRESHOLD && SENSOR_3>THRESHOLD && FastTimer(0)>t_overc && FastTimer(0)<=t_overd){       //3だけ黒線の上にある時
             PlaySound(SOUND_UP) ;
             SetPower(OUT_A,0);
             SetPower(OUT_C,0);
             go_le2;






           }else if(SENSOR_1>THRESHOLD && SENSOR_3<THRESHOLD &&  FastTimer(0)>t_overd && FastTimer(0)<=t_overe){       //3だけ黒線の上にあるとき
             PlaySound(SOUND_CLICK);
             go_st;
             Wait(5);
             SetPower(OUT_A,0);
             SetPower(OUT_C,4);
             go_ri1;
             
           }else if(SENSOR_1<THRESHOLD && SENSOR_3>THRESHOLD && FastTimer(0)>t_overd && FastTimer(0)<=t_overe){       //1だけ黒線の上にある時
             PlaySound(SOUND_CLICK);
             go_st
             Wait(5);
             SetPower(OUT_A,4);
             SetPower(OUT_C,0);
             go_le1;





          }else if(SENSOR_1>THRESHOLD && SENSOR_3<THRESHOLD && FastTimer(0)>t_overe && FastTimer(0)<=t_overf){       //1だけ黒線の上にあるとき
             PlaySound(SOUND_UP) ;
             SetPower(OUT_A,0);
             SetPower(OUT_C,0);
             go_ri2;
                           
                     
          }else if(SENSOR_1<THRESHOLD && SENSOR_3>THRESHOLD && FastTimer(0)>t_overe && FastTimer(0)<=t_overf){       //3だけ黒線の上にある時
             PlaySound(SOUND_UP) ;
             SetPower(OUT_A,0);
             SetPower(OUT_C,0);
             go_le2;
                   
                           
                     
                                                  
          }else if(SENSOR_1>THRESHOLD && SENSOR_3<THRESHOLD &&  FastTimer(0)>t_overf){       //3だけ黒線の上にあるとき
             PlaySound(SOUND_CLICK);
             go_st;
             Wait(5);
             SetPower(OUT_A,0);
             SetPower(OUT_C,4);
             go_ri1;
               
           }else if(SENSOR_1<THRESHOLD && SENSOR_3>THRESHOLD && FastTimer(0)>t_overf){       //1だけ黒線の上にある時
             PlaySound(SOUND_CLICK);
             go_st
             Wait(5);
             SetPower(OUT_A,4);
             SetPower(OUT_C,0);
             go_le1;





          }else if(SENSOR_1>THRESHOLD && SENSOR_3>THRESHOLD){       //両方黒の外にあるとき
             SetPower(OUT_A,0);
             SetPower(OUT_C,0);
             go_st;
             }
      }

}

添付ファイル: fileコース.JPG 241件 [詳細] file裏返し.jpg 235件 [詳細] file正面から.jpg 242件 [詳細] fileP1000063.jpg 235件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-07-09 (月) 16:52:20