2004/B1/28班練習問題

ライントレースをするロボット(修正中)

なるべく速く動かすために、回転動作を少なくして見ました。

task main()
{
 SetSensor(SENSOR_2,SENSOR_LIGHT); //光センサーの準備
 int a; //直前のカーブでどちらに曲がったか(ラインを探す時間の短縮)を表す関数を導入
 a=0; //aの初期設定(初めは右に曲がります)
 while(true) //ループするように設定
 {
   if(SENSOR_2 <= 40) //センサーがラインの上にある
     {
       OnFwd(OUT_A+OUT_C); //直進
     }
   else if(a==0) //センサーがラインを外れたとき1(直前のカーブで右に曲がったor初期)
     {
       ClearTimer(0); //曲がる時間をはかるタイマーをリセットする
       until(Timer(0)>1 || SENSOR_2 <= 40) //1秒回転するか、ラインの上に来るまで回転する
         {
           OnFwd(OUT_A);
           OnRev(OUT_C);
         }
       ClearTimer(0);
       until(Timer(0)>2 || SENSOR_2 <= 40) //逆回転
         {
           OnFwd(OUT_C);
           OnRev(OUT_A);
         }
         a=0;
      }
   else
      {
        ClearTimer(0);
       until(Timer(0)>1 || SENSOR_2 <= 40)
         {
           OnFwd(OUT_C);
           OnRev(OUT_A);
         }
       ClearTimer(0);
       until(Timer(0)>2 || SENSOR_2 <= 40)
         {
           OnFwd(OUT_A);
           OnRev(OUT_C);
         }
         a=1;
       }
   }
}

間違いあり。修正中
作成者&文責 蓮井


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-01-30 (日) 21:53:58