kadai2_1.jpg
#define THRESHOLD 50                                                       // 閾値
#define turn_right(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C);  //右に曲がる
#define turn_left(t) OnRev(OUT_A);OnFwd(OUT_C);Wait(t);Off(OUT_A+OUT_C);   //左に曲がる
#define go_straight(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);        //前進
#define RUN_TIME1 90  //,了間                                                     
#define RUN_TIME2 70  //                                                     
#define RUN_TIME3 34  //                                                     
#define RUN_TIME4 27  //
#define RUN_TIME5 23  //
#define RUN_TIME6 25  //
#define RUN_TIME7 25  //
#define RUN_TIME8 50  //
#define RUN_TIME9 50  //

task main ()
{   
   SetSensor(SENSOR_1, SENSOR_LIGHT);//センサー1は光センサー
   SetSensor(SENSOR_3, SENSOR_LIGHT);//センサー3は光センサー
  ClearTimer(0);
   while (Timer(0) <=RUN_TIME1) //while内をRUN_TIME1秒間繰り返す・・・
                                       {
       if ((SENSOR_1 < THRESHOLD)&&(SENSOR_3 < THRESHOLD))
       {   
           OnFwd(OUT_A+OUT_C);//(センサー1、センサー3)(黒、黒)のとき前進           
       } 
       if ((SENSOR_1 < THRESHOLD)&&(SENSOR_3 > THRESHOLD))
       {   
           Off(OUT_A);//(黒、白)のとき、左車輪を止めて進路を左に修正し急カーブを曲がる
           OnFwd(OUT_C);
        }
       if ((SENSOR_1 > THRESHOLD)&&(SENSOR_3 < THRESHOLD))
        {   
           OnRev(OUT_C);//(白、黒)のとき進路を右に修正
           OnFwd(OUT_A);
         }
        if ((SENSOR_1 > THRESHOLD)&&(SENSOR_3 > THRESHOLD))
         {   
           OnFwd(OUT_A+OUT_C);//(白、白)のとき前進           
         } 
                                        }
         Off(OUT_A+OUT_C);
     ClearTimer(0);//タイマーリセット
     while (Timer(0) <=RUN_TIME2) //センサー1を使用せずコースの内側のセンサーだけ感知させて直角を曲がる・・・
                     {
       if ((SENSOR_3 < THRESHOLD))
       {   
           OnFwd(OUT_A);//センサー3が黒のとき進路を右に修正
           OnRev(OUT_C);
       } 
       if ((SENSOR_3 > THRESHOLD))
       {   
           OnFwd(OUT_A+OUT_C);//センサー3が白のとき前進          
        }      
                     }
         Off(OUT_A+OUT_C);
     ClearTimer(0);
   while (Timer(0) <=RUN_TIME3)・・・
{
       if ((SENSOR_1 < THRESHOLD)&&(SENSOR_3 < THRESHOLD))
       {   
           OnFwd(OUT_A+OUT_C);//(黒、黒)前進
           
       } 
       if ((SENSOR_1 < THRESHOLD)&&(SENSOR_3 > THRESHOLD))
       {   
           Off(OUT_A);//(黒、白)進路修正
           OnFwd(OUT_C);
        }
       if ((SENSOR_1 > THRESHOLD)&&(SENSOR_3 < THRESHOLD))
        {   
           OnRev(OUT_C);//(白、黒)進路修正
           OnFwd(OUT_A);
         }
        if ((SENSOR_1 > THRESHOLD)&&(SENSOR_3 > THRESHOLD))
         {   
           OnFwd(OUT_A+OUT_C);//(白、白)前進
           
         } 
                                        }
         Off(OUT_A+OUT_C);
   turn_right(40);                  //ロータリーに入る前に右に曲がる
   ClearTimer(0);
     while (Timer(0) <=RUN_TIME4) //ロータリーではセンサー1だけ使用・・・
                     {
       if ((SENSOR_1 < THRESHOLD))
       {   
           OnFwd(OUT_C);//(黒) 進路修正
           OnRev(OUT_A);
       } 
       if ((SENSOR_1 > THRESHOLD))
       {   
           OnFwd(OUT_A+OUT_C);//(白)  前進        
        }      
                     }
         Off(OUT_A+OUT_C);

     turn_right(50);//ロータリー出るとき右に曲がる

   ClearTimer(0);
   while (Timer(0) <=RUN_TIME5)プログラムはと同じ・・・
{
       if ((SENSOR_1 < THRESHOLD)&&(SENSOR_3 < THRESHOLD))
       {   
           OnFwd(OUT_A+OUT_C);//(黒、黒)前進            
       } 
       if ((SENSOR_1 < THRESHOLD)&&(SENSOR_3 > THRESHOLD))
       {   
           OnRev(OUT_A);//(黒、白)進路修正
           OnFwd(OUT_C);
        }
       if ((SENSOR_1 > THRESHOLD)&&(SENSOR_3 < THRESHOLD))
        {   
           OnRev(OUT_C);//(白、黒)進路修正
           OnFwd(OUT_A);
         }
        if ((SENSOR_1 > THRESHOLD)&&(SENSOR_3 > THRESHOLD))
         {   
          OnFwd(OUT_A+OUT_C); //(白、白)前進            
          } 
                     }
         Off(OUT_A+OUT_C);
         turn_right(55);            //近道に入る前に右に曲がる
        go_straight(190);           //近道を前進
         turn_right(50);           //近道に出るときに右に曲がる       
        ClearTimer(0);
   while (Timer(0) <=RUN_TIME6)プログラムはと同じ ・・・
{
       if ((SENSOR_1 < THRESHOLD)&&(SENSOR_3 < THRESHOLD))
       {   
           OnFwd(OUT_A+OUT_C);//(黒、黒)前進           
       } 
       if ((SENSOR_1 < THRESHOLD)&&(SENSOR_3 > THRESHOLD))
       {   
           OnRev(OUT_A);//(黒、白)進路修正
           OnFwd(OUT_C);
        }
       if ((SENSOR_1 > THRESHOLD)&&(SENSOR_3 < THRESHOLD))
        {   
           OnRev(OUT_C);//(白、黒)進路修正
           OnFwd(OUT_A);
         }
        if ((SENSOR_1 > THRESHOLD)&&(SENSOR_3 > THRESHOLD))
         {   
          OnFwd(OUT_A+OUT_C); //(白、白)前進           
          } 
                     }
         Off(OUT_A+OUT_C);
          turn_right(30);//ロータリーに入る前に右に曲がる

      ClearTimer(0);
     while (Timer(0) <=RUN_TIME7) //プログラムはい汎韻検ΑΑΝ
                     {
       if ((SENSOR_1 < THRESHOLD))
       {   
           OnFwd(OUT_C);//黒
           OnRev(OUT_A);
       } 
       if ((SENSOR_1 > THRESHOLD))
       {   
           OnFwd(OUT_A+OUT_C);//白          
        }       
                     }
         Off(OUT_A+OUT_C);
      turn_right(50); //ロータリー出るとき右に曲がる
      ClearTimer(0);
      while (Timer(0) <=RUN_TIME8) プログラムはと同じ・・・
{
       if ((SENSOR_1 < THRESHOLD)&&(SENSOR_3 < THRESHOLD))
       {   
           OnFwd(OUT_A+OUT_C);//(黒、黒)前進           
       } 
       if ((SENSOR_1 < THRESHOLD)&&(SENSOR_3 > THRESHOLD))
       {   
           OnRev(OUT_A);//(黒、白)進路修正
           OnFwd(OUT_C);
        }
       if ((SENSOR_1 > THRESHOLD)&&(SENSOR_3 < THRESHOLD))
        {   
           OnRev(OUT_C);//(白、黒)進路修正
           OnFwd(OUT_A);
         }
        if ((SENSOR_1 > THRESHOLD)&&(SENSOR_3 > THRESHOLD))
         {   
          OnFwd(OUT_A+OUT_C); //(白、白)前進           
          } 
                     }
         Off(OUT_A+OUT_C);
        ClearTimer(0);
      while (Timer(0) <=RUN_TIME9)・・・
{
       if ((SENSOR_1 < THRESHOLD)&&(SENSOR_3 < THRESHOLD))
       {   
           OnFwd(OUT_A+OUT_C);//(黒、黒)前進            
       } 
       if ((SENSOR_1 < THRESHOLD)&&(SENSOR_3 > THRESHOLD))
       {   
           OnRev(OUT_A);//(黒、白)進路修正
           OnFwd(OUT_C);
        }
       if ((SENSOR_1 > THRESHOLD)&&(SENSOR_3 < THRESHOLD))
        {   
           Off(OUT_C);//(白、黒)のとき、右車輪を止めて進路を右に修正し急カーブを曲がる
           OnFwd(OUT_A);
         }
        if ((SENSOR_1 > THRESHOLD)&&(SENSOR_3 > THRESHOLD))
         {   
          OnFwd(OUT_A+OUT_C); //(白、白)前進           
          } 
                     }
         Off(OUT_A+OUT_C);
}

添付ファイル: filekadai2_1.jpg 100件 [詳細] filekadai2.jpg 44件 [詳細]

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