[[2009a/A8/課題2右]]
 #define THRESHOLD 44

 task main ()
 {
 SetSensor(SENSOR_1,SENSOR_LIGHT);
 SetSensor(SENSOR_2,SENSOR_TOUCH);
 SetSensor(SENSOR_3,SENSOR_LIGHT);
 
 while (true) {        //両方黒なら止まって押さえを上げる
 if (SENSOR_1<THRESHOLD){
 if (SENSOR_3<THRESHOLD){
            Wait(100);
                   OnRev(OUT_B); Wait(1);
      #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);}
                   }
 if (SENSOR_2 == 1 )     //タッチしたら押さえを下げる
        {
            OnFwd(OUT_B) ;  Wait(1); 
            
                    }
 else{
                  if (SENSOR_1+SENSOR_3<THRESHOLD){   //ライントレース
                   OnRev(OUT_A); Wait(5);
              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);}
                   }
                if (SENSOR_1>THRESHOLD){
                  if(SENSOR_3>THRESHOLD){
                   OnFwd(OUT_A+OUT_C);
                   }
                else
                {
                  OnFwd(OUT_A);
                 Off(OUT_C);
                }
                }
                else{
                if(SENSOR_3>THRESHOLD){
                OnRev(OUT_A);
                OnFwd(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