[[2006a/C3/課題3左]]


 #define turn_right OnFwd(OUT_A);OnRev(OUT_C); 
 #define turn_left OnRev(OUT_A);OnFwd(OUT_C);
 #define Stop_turning Off(OUT_A+OUT_C);
 #define TURN_TIME 50
 #define go_straight OnFwd(OUT_A+OUT_C);Wait(30);Off(OUT_A+OUT_C);Wait(50);

 sub serch_light()
 {
    ClearTimer(0);
    while(FastTimer(0)<400){
       if(SENSOR_2>=light_max){
           light_max=SENSOR_2;
           time_max=FastTimer(0);
           }
      }
      Stop_turning;Wait(50);
      turn_left;     
      Wait(TURN_TIME-time_max);
      Stop_turning;
      go_straight;          
 }

 task main()
 {
    SetSensor(SENSOR_2,SENSOR_LIGHT);
    int light_max=30,time_max=0;
    while(true){ 
    OnFwd(OUT_C);OnRev(OUT_A);Wait(25);Off(OUT_A+OUT_C);Wait(10);
    turn_right;
    ClearTimer(0);
    while(FastTimer(0)<TURN_TIME){
       if(SENSOR_2>=light_max){
           light_max=SENSOR_2;
           time_max=FastTimer(0);
           }
      }
      Stop_turning;Wait(50);
      turn_left;     
      Wait(TURN_TIME-time_max);
      Stop_turning;
      go_straight;      
       if(SENSOR_2<light_max){
           start play_music; 
           search_light();
           stop play_music;             
          }
      light_max=30;
      time_max=0;
      }
 }



 #define turn_right OnFwd(OUT_A);OnRev(OUT_C); 
 #define turn_left OnRev(OUT_A);OnFwd(OUT_C);
 #define Stop_turning Off(OUT_A+OUT_C);
 #define TURN_TIME 50
 #define go_straight OnFwd(OUT_A+OUT_C);Wait(30);Off(OUT_A+OUT_C);Wait(50);
 task main()
 {
    SetSensor(SENSOR_2,SENSOR_LIGHT);
    int light_max=0,time_max=0;
    while(true){ 
    turn_left;Wait(25);Off(OUT_A+OUT_C);Wait(10);
    turn_right;
    ClearTimer(0);
    while(FastTimer(0)<TURN_TIME){
       if(SENSOR_2>=light_max){
           light_max=SENSOR_2;
           time_max=FastTimer(0);
           }
      }
       if(SENSOR_2<light_max){
          ClearTimer(0);
    while(FastTimer(0)<400){
       if(SENSOR_2>=light_max){
           light_max=SENSOR_2;
           time_max=FastTimer(0);
           }
      }
      }
      Stop_turning;Wait(50);
      turn_left;     
      Wait(TURN_TIME-time_max);
      Stop_turning;
      go_straight;  
      light_max=30;
      time_max=0;
      }
 }      




 #define turn_right OnFwd(OUT_A);OnRev(OUT_C); 
 #define turn_left OnRev(OUT_A);OnFwd(OUT_C);
 #define go_straight OnFwd(OUT_A+OUT_C);
 task main()
 {
    SetSensor(SENSOR_1,SENSOR_LIGHT);
    SetSensor(SENSOR_3,SENSOR_LIGHT);
    while(true){
       if(SENSOR_1>=30&&SENSOR_3>=30){
           go_straight;
           }
       if(SENSOR_1<30&&SENSOR_3>=30){ 
           turn_right;
           }
       if(SENSOR_1>=30&&SENSOR_3<30){
           turn_left;
           }
       if(SENSOR_1<30&&SENSOR_3<30){
           turn_right;
           }
    }    
 }


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