[[2018a/Member]]

**pro [#zac6e450]
 #define THRESHOLD 50
 #define SPEED_H 25
 #define SPEED_L 20
 #define OnRL(speedR,speedL)OnFwd(OUT_B,speedR);OnFwd(OUT_C,speedL);
 #define go_forward OnRL(SPEED_H,SPEED_H);
 #define turn_left1 OnRL(SPEED_L+20,-SPEED_L-20);
 #define turn_left0 OnRL(SPEED_L,0);
 #define turn_right0 OnRL(0,SPEED_L);
 #define turn_right1 OnRL(-SPEED_L-20,SPEED_L+20);Wait(t);
 #define STEP 1
 #define short_break Off(OUT_BC);Wait(1000);
 #define CROSS_TIME 300
 #define cross_line OnRL(SPEED_L,SPEED_L);Wait(CROSS_TIME);short_break;

 sub AtoJ(int t)
 {
 int n = 0;
 SetSensorLowspeed(S4);
 
  SetSensorLight(S3);
 

   while(n < 1){
 
    if(SensorUS(S4) <= 7){
      Off(OUT_BC);
      Wait(1000);
      go_forward;
      Wait(500);
      Off(OUT_BC);
      OnRev(OUT_A,50);
      Wait(1000);
      Off(OUT_A); 
      n++;
    }else{
     if (SENSOR_3 < THRESHOLD-14){
     turn_right1;
    }else if(SENSOR_3 < THRESHOLD-7){
      turn_right0;
    }else if(SENSOR_3 < THRESHOLD+7){
      go_forward;
    }else if(SENSOR_3 < THRESHOLD+10){
      turn_left0;
    }else if(SENSOR_3 < THRESHOLD+20){
       turn_left1;
    }else{
      turn_left1;
    }      
     Wait(STEP);
   }

  }
 n = 0;
 }

 sub JtoL(int t)
 {
 int n = 0;
 int  nOnline=0;

 
 SetSensorLight(S3);
 

  while(n < 4){
  
 
    if (SENSOR_3 < THRESHOLD-14){
         if(nOnline < 2){
           OnFwd(OUT_BC,30);
           Wait(200);
           nOnline++;
           n++;
           }else{
     turn_left1;Wait(1500);
     nOnline=0;
     n++;
     }
    }else{
     if(SENSOR_3 < THRESHOLD-7){
      turn_left0;
    }else if(SENSOR_3 < THRESHOLD+7){
      go_forward;
    }else if(SENSOR_3 < THRESHOLD+10){
      turn_right0;
    }else if(SENSOR_3 < THRESHOLD+20){
       turn_right1;
    }else{
      turn_right1;
     }   
     nOnline=0;
     Wait(STEP);
   }

  }
  n=0;
  Off(OUT_BC);
  Wait(1000);
  turn_right1;
 }

 sub LtoH(int t)
 {
 int n = 0;
 
 SetSensorLight(S3);
 

  while(n < 6){

    if (SENSOR_3 < THRESHOLD-14){
     turn_right1;
    }else{ 
    if(SENSOR_3 < THRESHOLD-7){
      turn_right0;
    }else if(SENSOR_3 < THRESHOLD+7){
      go_forward;
    }else if(SENSOR_3 < THRESHOLD+10){
      turn_left0;
    }else if(SENSOR_3 < THRESHOLD+20){
       turn_left1;Wait(420);/*電池依存*/
       n++;
    }else{
      turn_left1;
      n++;
      }
     Wait(STEP);
   }

  }
  n = 0;
 }

 sub HtoG(int t)
 {
 int n = 0;
 
 SetSensorLight(S3);
 

 while(n < 1){

    if (SENSOR_3 < THRESHOLD-14){
      cross_line;      
      n++;     
    }else{ 
    if(SENSOR_3 < THRESHOLD-7){
      turn_left0;
    }else if(SENSOR_3 < THRESHOLD+7){
      go_forward;
    }else if(SENSOR_3 < THRESHOLD+10){
      turn_right0;
    }else if(SENSOR_3 < THRESHOLD+20){
       turn_right1;
    }else{
      turn_right1;
      }
     Wait(STEP);
   }

  }
  n = 0;
 }

 sub GtoD(int t)
 {
 int n = 0;
 
 SetSensorLight(S3);
 

  while(n < 2){

    if (SENSOR_3 < THRESHOLD-14){
      Off(OUT_BC);
      Wait(1000);     
     turn_right1;
     n++;
    }else{ 
    if(SENSOR_3 < THRESHOLD-7){
      turn_right0;
    }else if(SENSOR_3 < THRESHOLD+7){
      go_forward;
    }else if(SENSOR_3 < THRESHOLD+10){
      turn_left0;
    }else if(SENSOR_3 < THRESHOLD+20){
       turn_left1;
    }else{
      turn_left1;
      }
     Wait(STEP);
   }

  }
  n = 0;
 }

 sub FtoD(int t) 
 {
 int n = 0;
 
  SetSensorLight(S3);
 

   while(n < 1){

    if (SENSOR_3 < THRESHOLD-14){
     OnFwd(OUT_BC,30);
     Wait(200);
     n++;
    }else{ 
    if(SENSOR_3 < THRESHOLD-7){
      turn_right0;
    }else if(SENSOR_3 < THRESHOLD+7){
      go_forward;
    }else if(SENSOR_3 < THRESHOLD+10){
      turn_left0;
    }else if(SENSOR_3 < THRESHOLD+20){
       turn_left1;
    }else{
      turn_left1;
      }
     Wait(STEP);
   }

  }
  n = 0;
 }

 sub DtoD(int t)
 {
 int n = 0;
 
  SetSensorLight(S3);
 

   while(n < 1){

    if (SENSOR_3 < THRESHOLD-14){
     turn_left1;Wait(t);
     OnRev(OUT_BC,30);
     Wait(t);
     Off(OUT_BC);
     OnFwd(OUT_A,50);
     Wait(1000);
     Off(OUT_A);
     OnRev(OUT_BC,30);
     Wait(90);
     Off(OUT_BC);
     turn_left1;
     Wait(t);
     n++;
    }else{ 
    if(SENSOR_3 < THRESHOLD-7){
      turn_right0;
    }else if(SENSOR_3 < THRESHOLD+7){
      go_forward;
    }else if(SENSOR_3 < THRESHOLD+10){
      turn_left0;
    }else if(SENSOR_3 < THRESHOLD+20){
       turn_left1;
    }else{
      turn_left1;
      }
     Wait(STEP);
   }

  }
  n = 0;
 }

  sub DtoC(int t)
 {
 int n = 0;
 
  SetSensorLight(S3);
 

   while(n < 2){

    if (SENSOR_3 < THRESHOLD-14){     
     Off(OUT_BC);
     Wait(1000);
     cross_line;
     n++;
    }else{ 
    if(SENSOR_3 < THRESHOLD-7){
      turn_right0;
    }else if(SENSOR_3 < THRESHOLD+7){
      go_forward;
    }else if(SENSOR_3 < THRESHOLD+10){
      turn_left0;
    }else if(SENSOR_3 < THRESHOLD+20){
       turn_left1;
    }else{
      turn_left1;
      }
     Wait(STEP);
   }

  }
  n = 0;
 }  

 task main()
 {
  AtoJ(1350);
  turn_left1;
  Wait(1000);
  go_forward;
  Wait(500);
  Off(OUT_BC);
  JtoL(100);
  LtoH(100);
  turn_left0;
  Wait(3000);
  HtoG(100);
  turn_left0;
  Wait(400);
  GtoD(740);
  FtoD(100);
  DtoD(1500);
  DtoC(100);
  }

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