[[2018a/Member]]
*ライトレース [#b1a6efbd]
#contents
*プログラム [#b0e40d01]
 
 #define llt OnRev(OUT_A,50); OnFwd(OUT_C,30); Wait(1);//大きく左に回る
 #define lrt OnFwd(OUT_A,30); OnRev(OUT_C,50);  Wait(1);//大きく右に回る
 #define ternleft  OnRev(OUT_A,50); OnFwd(OUT_C,10);//左に回る
 #define ternright  OnFwd(OUT_A,10); OnRev(OUT_C,50);//右に回る
 #define go OnRev(OUT_A,50); OnRev(OUT_C,50);//直進する
 #define back OnFwd(OUT_A,50); OnFwd(OUT_C,50);//後退する
 #define close RotateMotor(OUT_B,50,90);
 #define open RotateMotor(OUT_B,50,-90);


 task main()
 { SetSensorLight(S3);
   int n=0;
   while(n<=250)           //bまで
 {
   if(SENSOR_3<45)              //B 
 {
   lrt;  n++;
 }

   else if(SENSOR_3<52)        //G
 {
   go; n=0;
 }

   else
 {
   llt;  n=0;                 // W
  }
 }
 Off(OUT_AC);
 Wait(1000);
 RotateMotor(OUT_A,50,-130);


 n=0;
   while(n<=300)              //cまで
 {
   if(SENSOR_3<45)              //B 
 {
   lrt;  n++;
 }

   else if(SENSOR_3<52)        //G
 {
   go; n=0;
 }

   else
 {
   llt;  n=0;                 // W
 }
 }

 Off(OUT_AC);
 Wait(1000);
 RotateMotor(OUT_A,50,-300);            //C  turn



 n=0;
  while(n<=200)
{
   if(SENSOR_3<45)              //B 
 {
   llt;  n++;
 }

   else if(SENSOR_3<51)        //G
 {
   go; n=0;
 }

   else
 {
    ternright;  n=0;                 // W
 }

 }



 Off(OUT_AC);
 Wait(2000);                    //D直前の角で止まる

  n=0;
   while(n<=200)                 //D          
 {
   if(SENSOR_3<45)              //B 
 {
   llt;  n++;
 }

   else if(SENSOR_3<51)        //G
 {
   go; n=0;
 }

   else
 {
      ternright;  n=0;                 // W
  }
 }
 Off(OUT_AC);
 Wait(1000);                       //D到着



 close;
 Off(OUT_ABC);
 RotateMotor(OUT_A,50,-180);
 Wait(1000);                    //hasamu


 n=0;
   while(n<=200)
 {
   if(SENSOR_3<45)              //B 
 {
   llt;  n++;
 }

   else if(SENSOR_3<51)        //G
 {
   go; n=0;
 }

   else
 {
    ternright;  n=0;                 // W
  }
 } 

    OnRev(OUT_AC,50); 
    Wait(500);
    Off(OUT_AC);            //E turn
    

    n=0;
   while(n<=400)
 {
   if(SENSOR_3<45)              //B 
 {
   llt;  n++;
 }

   else if(SENSOR_3<51)        //G
 {
   go; n=0;
 }

   else
 {
    ternright;  n=0;                 // W
 }
 } 
  Off(OUT_AC);
  Wait(1000);

  n=0;
   while(n<=400)
  {
   if(SENSOR_3<45)              //B 
 {
   llt;  n++;
 }

   else if(SENSOR_3<51)        //G
 {
   go; n=0;
 }

   else
 {
    ternright;  n=0;                 // W
  }
 } 
 
 Off(OUT_AC);
 go;
 Wait(500);             //s1


  n=0;
     while(n<=400)
 {
   if(SENSOR_3<45)              //B 
 {
   lrt;  n++;
 }

   else if(SENSOR_3<52)        //G
 {
   go; n=0;
 }

   else
 {
   llt;  n=0;                 // W
  }
 }                                 
 Off(OUT_AC);
 go;
 Wait(500);                           //s2

    n=0;
   while(n<=230)
 {
   if(SENSOR_3<45)              //B 
 {
   llt;  n++;
 }

   else if(SENSOR_3<51)        //G
 {
   go; n=0;
 }

   else
 {
    ternright;  n=0;                 // W
  }
 } 
 Off(OUT_AC);
 Wait(1000);
 RotateMotor(OUT_C,50,-310);         //H turn

    n=0;
   while(n<=200)
 {
   if(SENSOR_3<45)              //B 
 {
   llt;  n++;
 }

   else if(SENSOR_3<51)        //G
 {
   go; n=0;
 }

   else
 {
    ternright;  n=0;                 // W
  }
 }

 Off(OUT_AC);
 Wait(1000);                                 //I stop

 RotateMotor(OUT_C,50,-350);
 n=0;
   while(n<=250)
 {
   if(SENSOR_3<45)              //B 
 {
   lrt;  n++;
 }
   else if(SENSOR_3<52)        //G
 {
   go; n=0;
 }
   else
 {
   llt;  n=0;                 // W
 }
 }   
 Off(OUT_AC);  
 Wait(500);                                         //L 
 RotateMotor(OUT_A,50,-90);        
 Off(OUT_A);


 n=0;
   while(n<=230)
 {
   if(SENSOR_3<45)              //B 
 {
   lrt;  n++;
 }

   else if(SENSOR_3<52)        //G
 {
   go; n=0;
 }

   else
 {
   llt;  n=0;                 // W
  }
 }      
 Off(OUT_AC);  
 Wait(500);                                         //k
 RotateMotor(OUT_A,50,-90);
 Off(OUT_A);

   n=0;
   while(n<=230)
 {
   if(SENSOR_3<45)              //B 
 {
   lrt;  n++;
 }

   else if(SENSOR_3<52)        //G
 {
   go; n=0;
 }

   else
 {
   llt;  n=0;                 // W
 }
 }

 Off(OUT_AC);
 Wait(1000);
 RotateMotor(OUT_C,50,360);
 open;
 Off(OUT_B);


 back;                                     //帰還準備
 Wait(250);
 RotateMotor(OUT_C,50,-60);
 Off(OUT_C);
 go;
 until(SENSOR_3 <= 45);
     n=0;
   while(n<=250)           
 {
   if(SENSOR_3<45)              //B 
 {
   lrt;  n++;
 }

   else if(SENSOR_3<52)        //G
 {
   go; n=0;
 }

   else
 {
   llt;  n=0;                 // W
  }
 }
 Off(OUT_AC);
 Wait(1000);
 RotateMotor(OUT_A,50,-180);

     n=0;
   while(n<=250)           
{
   if(SENSOR_3<45)              //B 
 {
   lrt;  n++;
 }

   else if(SENSOR_3<52)        //G
 {
   go; n=0;
 }

   else
 {
   llt;  n=0;                 // W
  }
 }
 Off(OUT_AC);
 Wait(1000);
 }

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS