2009a/A8/課題2右

     #define migi 40 
     #define hidari 50
     task main() {
     SetSensor(SENSOR_1,SENSOR_LIGHT);
     SetSensor(SENSOR_2,SENSOR_TOUCH);
     SetSensor(SENSOR_3,SENSOR_LIGHT); 
       int flag=0;
     while(flag<36){   //36回交差点を通過して終了
            if(SENSOR_1>hidari){     //ライントレース
                  if(SENSOR_3>migi)
                 {OnFwd(OUT_A+OUT_C);}
                  else {OnFwd(OUT_A);
                         OnRev(OUT_C);}
                  }
             else{
                    if (SENSOR_3>migi){OnFwd(OUT_C);
                        OnRev(OUT_A);} 
             else{OnFwd(OUT_A+OUT_C);   
                     flag++;}           //交差点を通過したらflagに1足す
              }
             if(SENSOR_2==1)      //障害物に触れたら
               { 
                OnRev(OUT_B);Wait(50);  //枠を下げる
                Off(OUT_B);   
               OnFwd(OUT_A+OUT_C);Wait(90);
flag++;   //flagに1足す
                until((SENSOR_1<hidari)&&(SENSOR_3<migi)){  //光センサーがどちらも黒になるまでライントレース
                 if(SENSOR_1>hidari){
                 if(SENSOR_3>migi){OnFwd(OUT_A+OUT_C);}
                  else {OnFwd(OUT_A);OnRev(OUT_C);}
                  }
             else{
             if (SENSOR_3>migi){OnFwd(OUT_C);OnRev(OUT_A);}//もしどちらも黒なら以下の命令を実行
           }
         }
                Off(OUT_A+OUT_C);Wait(100);  //枠をあげる
              OnRev(OUT_A+OUT_C);Wait(50);
              OnFwd(OUT_B);Wait(50);          
                Off(OUT_B);  
              OnRev(OUT_A+OUT_C);Wait(25); //障害物を迂回する
                Off(OUT_A+OUT_C);Wait(50);
              OnRev(OUT_A);
              OnFwd(OUT_C);Wait(90);
                Off(OUT_A+OUT_C);Wait(50);
              OnFwd(OUT_A+OUT_C);Wait(180);
                Off(OUT_A+OUT_C);Wait(50);
              OnFwd(OUT_A);
              OnRev(OUT_C);Wait(90);
                Off(OUT_A+OUT_C);Wait(50);
              OnFwd(OUT_A+OUT_C);Wait(330);
                Off(OUT_A+OUT_C);Wait(50);
              OnFwd(OUT_A);
              OnRev(OUT_C);Wait(90);
                Off(OUT_A+OUT_C);Wait(50);
              OnFwd(OUT_A+OUT_C);Wait(180);
                Off(OUT_A+OUT_C);Wait(50);
              OnRev(OUT_A);
              OnFwd(OUT_C);Wait(90);
                Off(OUT_A+OUT_C);Wait(50);
              OnRev(OUT_A+OUT_C);Wait(40);
                Off(OUT_A+OUT_C);Wait(50);
flag++;    //flagに1足す
        }
     }
Off(OUT_A+OUT_C);}

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-06-19 (金) 17:02:09