[[2013a/Member]]
-プログラム説明
#define THRESHOLD 37

#define HIPOWER 7

#define LOWPOWER 2

#define set_power_H SetPower(OUT_AC,HIPOWER);

#define set_power_L SetPower(OUT_AC,LOWPOWER);

#define set_power_N SetPower(OUT_B,LOWPOWER);

#define go_fwd set_power_H; OnFwd(OUT_AC);

#define arm_fwd set_power_N; OnFwd(OUT_B);Wait(30);Off(OUT_B);

#define arm_bwd set_power_N; OnRev(OUT_B);Wait(30);Off(OUT_B);

#define turn_left1 set_power_L ;\

 OnFwd(OUT_C);OnRev(OUT_A);

#define turn_left0 set_power_L ;\

 OnFwd(OUT_C);Off(OUT_A);

#define turn_right0 set_power_L ;\

 OnFwd(OUT_A);Off(OUT_C);

#define turn_right1 set_power_L ;\

 OnFwd(OUT_A);OnRev(OUT_C);

#define STEP 1

#define nMAX 200

#define short_break Off(OUT_AC); Wait(100);

#define CROSS_TIME 300

#define cross_line set_power_L;\

 OnFwd(OUT_A);OnRev(OUT_C);\
   Wait(CROSS_TIME);short_break;

sub followline_l () {

 int nOnline=0;
 int MOVETIME;
 MOVETIME=0;
 SetSensor(SENSOR_2,SENSOR_LIGHT);


 PlaySound(SOUND_UP);
 MOVETIME=MOVETIME+500;
 while(nOnline < nMAX  && FastTimer(0)<=MOVETIME){
   
   if(SENSOR_2< THRESHOLD -14) {
      turn_left1;
      nOnline++;
   }else{
    if(SENSOR_2< THRESHOLD -10){
     turn_left0;
   }else if(SENSOR_2< THRESHOLD -7){
     go_fwd;
   }else if(SENSOR_2< THRESHOLD -1){
     turn_right0;
   }else{
      turn_right1;
    }
    nOnline=0;
    
    }
    Wait(STEP*10);
  }

}

sub followline_r () {

 int nOnline=0;
 int MOVETIME;
 MOVETIME=0;
 SetSensor(SENSOR_2,SENSOR_LIGHT);


MOVETIME=MOVETIME+500;
PlaySound(SOUND_DOWN);
 
 while(nOnline < nMAX  && FastTimer(0)<=MOVETIME){
   
   if(SENSOR_2< THRESHOLD -14) {
      turn_right1;
      nOnline++;
   }else{
    if(SENSOR_2< THRESHOLD -10){
     turn_right0;
   }else if(SENSOR_2< THRESHOLD -7){
     go_fwd;
   }else if(SENSOR_2< THRESHOLD -1){
     turn_left0;
   }else{
      turn_left1;
    }
    nOnline=0;
    
    }
    Wait(STEP*10);
  }	

}

sub followline_l1 () {

 int MOVETIME;
 MOVETIME=0;
 SetSensor(SENSOR_2,SENSOR_LIGHT);
 MOVETIME=MOVETIME+500; 
 PlaySound(SOUND_LOW_BEEP);
 
 
 while(FastTimer(0)<=MOVETIME){
   if(SENSOR_2< THRESHOLD -14) {
      turn_left1;
   }else{
    if(SENSOR_2< THRESHOLD -10){
     turn_left0;
    }else if(SENSOR_2< THRESHOLD -7){
     go_fwd;
    }else if(SENSOR_2< THRESHOLD -1){
     turn_right0;
    }else{
      turn_right1;
     }
    Wait(STEP*10);
    }
 }

}

task main () {

SetSensor(SENSOR_2,SENSOR_LIGHT);
ClearTimer(0);
int nOnline;
int MOVETIME;



while(FastTimer(0)<=500){
   followline_l();
}
	Off(OUT_AC);
	Wait(50); 
	PlaySound(SOUND_DOUBLE_BEEP);
	ClearTimer(0);
	
while(FastTimer(0)<=500){
   followline_l();
}
	Off(OUT_AC);
	Wait(50); 
	PlaySound(SOUND_DOUBLE_BEEP);
	ClearTimer(0);
	turn_right0;
	Wait(100);
	Off(OUT_AC);
	Wait(50);
	go_fwd;
	Wait(50);
	Off(OUT_AC);
	Wait(50);
	OnFwd(OUT_B);
	Wait(10);
	Off(OUT_B);
	turn_left0;
	Wait(100);
	Off(OUT_AC);
	Wait(50);
	

while(FastTimer(0)<=500){

   followline_l();
}
	Off(OUT_AC);
	Wait(50); 
	PlaySound(SOUND_DOUBLE_BEEP);
	ClearTimer(0);
	
while(FastTimer(0)<=500){
 followline_l1();
}
	PlaySound(SOUND_DOUBLE_BEEP);
	turn_left1;
	Wait(30);
	ClearTimer(0);
	
while(FastTimer(0)<=500){
 followline_r();
}

	Off(OUT_AC);
	Wait(50);
	PlaySound(SOUND_CLICK);
	turn_left1;
	Wait(20);
	ClearTimer(0);

	
while(FastTimer(0)<=500){
 followline_l();
}

}


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