[[2005/C5/あきひろ]]
 #define spin OnFwd(OUT_A);OnRev(OUT_C);Wait(30);
 #define go_straight OnFwd(OUT_A+OUT_C);
 #define go_back OnRev(OUT_A+OUT_C);

 int light_max1=0;
 int light_max3=0;
 int RUN_TIME=800;

 task main()
 {    SetSensor(SENSOR_1,SENSOR_LIGHT);
     SetSensor(SENSOR_3,SENSOR_LIGHT);
     
     ClearTimer(0);
     
     while(FastTimer(0)<RUN_TIME)
     { if((SENSOR_1>light_max1)||(SENSOR_3>light_max3)){
       spin;
       light_max1=SENSOR_1;PlayTone(400,5);
       light_max3=SENSOR_3;PlayTone(600,5);}
       }
     
     while(FastTimer(0)>=RUN_TIME) 
    {if((SENSOR_1<light_max1)&&(SENSOR_3<light_max3))
     {spin;}
            
     if(SENSOR_1>=light_max1-5)
     {go_straight;}
     
     if(SENSOR_3>=light_max3-5)
     {go_back;}}
     

 }
ーーーーーーーーー
 #define go_straight OnFwd(OUT_A+OUT_C);
 #define turn_right  OnFwd(OUT_A);OnRev(OUT_C);
 #define turn_left  OnFwd(OUT_C);OnRev(OUT_A);
 #define RUN_TIME 300
 
 int light_R=0;
 int light_L=0;
 
 task main()
 {     SetSensor(SENSOR_1,SENSOR_LIGHT);
        SetSensor(SENSOR_3,SENSOR_LIGHT);
         
        ClearTimer(0);
       
     while(true){  while(FastTimer(0)<RUN_TIME)
        {turn_right;
        if(SENSOR_1>light_L) 
         {light_L=SENSOR_1;PlayTone(220,1);}
               if(SENSOR_3>light_R){light_R=SENSOR_3;
 PlayTone(600,1);}
        }
                     
              
             if((SENSOR_1>=light_L)||(SENSOR_3>=light_R))
               {go_straight;}
             if((SENSOR_1<light_L)&&(SENSOR_3<light_R))
             {if(SENSOR_1>SENSOR_3){turn_left;}
              if(SENSOR_3>SENSOR_1){turn_right;}
             } 
                               
    }}



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