[[2009b/A2/ロボコン]]

***最初 [#r9b26a7a]
 #define Bright 45  
 #define GOFWD(t) OnRev(OUT_A+OUT_C);  Wait(t);
 #define Stop  Off(OUT_A+OUT_C);
 #define GOREV OnFwd(OUT_A+OUT_C); 
 task main ()
 {
 	 SetSensor(SENSOR_3, SENSOR_LIGHT);
              SetSensor(SENSOR_2,SENSOR_LIGHT);
              SetSensor(SENSOR_1,SENSOR_ROTATION);
              
             while(SENSOR_2 > Bright){
 	 	GOFWD(10);
       	}
       	Wait(10);
       	while(SENSOR_2>Bright){
       		OnRev(OUT_C);
       		Off(OUT_A);
       	}
       PlaySound(SOUND_DOUBLE_BEEP) ; 
     	ClearSensor(SENSOR_1);
      	while (abs(SENSOR_1)< 60) {
              	if (SENSOR_2 <  Bright) {   // 醇M醇`醇S潤ッ醇Q&#8222;遵ャ…遵ャ¢遵ャ遵ー遵ャ&#8710;遵ャ´
                    	 	OnRev(OUT_A);
                     		 Off(OUT_C);
                     		 Wait(20);
              	} 
             	else {                      // 醇M醇`醇S潤ッ遵ャ潤・・遵沛・O遵ャ遵ス遵ャΩ遵ャ&#8710;遵ャ´
                    		Off(OUT_A);
                   	 	OnRev(OUT_C);
                   	 	Wait(20); 
              	}
    	 } 
              Stop;  
 	ClearSensor(SENSOR_1);
 	OnRev(OUT_B);
 	//start arm;
 	/*while(abs(SENSOR_1)<5){
 		OnRev(OUT_C);
 		Float(OUT_A);
 		Wait(40);
 		OnFwd(OUT_A);
 		Wait(5);
 	}*/
 	ClearTimer(0);
 	while(FastTimer(0)<150){
 		OnRev(OUT_A);
 		Float(OUT_C);
 		Wait(60);
 		OnFwd(OUT_C);
 		Wait(20);
 	}
 	Stop;
 	PlaySound(SOUND_DOUBLE_BEEP) ; 
 	while(abs(SENSOR_1)<40){
 		GOFWD(10);
 	}
 	Stop;
 	Wait(100);
 	//stop arm;
 	PlaySound(SOUND_FAST_UP) ;
 	ClearSensor(SENSOR_1);
 	/*while(SENSOR_3<Bright){
 		GOREV;
 	}*/
 	while(abs(SENSOR_1)<40){
  		GOREV;
 	}
 	Stop;
 	Off(OUT_B);
 	/*ClearTimer(0);
  	while(FastTimer(0)<150){
 		OnFwd(OUT_A);
		Float(OUT_C);
		Wait(40);
		OnRev(OUT_C);
		Wait(5);
	}
	Stop;*/
	while(SENSOR_2>Bright){
		OnFwd(OUT_C);
		OnRev(OUT_A);
		
	}
	/*while(SENSOR_3>Bright){
		GOREV;
	}*/
	PlaySound(SOUND_FAST_UP) ;
	Stop;
	ClearTimer(0);
	ClearSensor(SENSOR_1);
	while (FastTimer(0)<500) {
             	if (SENSOR_3 <  Bright) {   // 醇M醇`醇S潤ッ醇Q&#8222;遵ャ…遵ャ¢遵ャ遵ー遵ャ&#8710;遵ャ´
                   	 	OnFwd(OUT_C);
                    		 Off(OUT_A);
             	} 
            	else {                      // 醇M醇`醇S潤ッ遵ャ潤・・遵沛・O遵ャ遵ス遵ャΩ遵ャ&#8710;遵ャ´
                   		Off(OUT_C);
                  	 	OnFwd(OUT_A);
             	}
   	 } 
   	 Stop;
   	 ClearSensor(SENSOR_1);
   	 while(abs(SENSOR_1)<=20){
   	 	OnFwd(OUT_C);
   	 	Float(OUT_A);
   	 	Wait(20);
   	 	OnRev(OUT_A);
   	 }
   	 
   	 ClearTimer(0);
   	 while(FastTimer(0)<500){
   	 	OnFwd(OUT_A+OUT_C);
   	 }
   	 /*ClearSensor(SENSOR_1);
   	 while(abs(SENSOR_1)<=180){
   	 	OnFwd(OUT_A+OUT_C);
   	 }
   	 Stop;*/
   	/*ClearSensor(SENSOR_1);
   	 while(abs(SENSOR_1)<=90){
   		OnFwd(OUT_A);
		Float(OUT_C);
		Wait(40);
		OnRev(OUT_C);
		Wait(40);
   	}
   	Stop;*/
   	/*while((SENSOR_3>Bright) || (SENSOR_2>Bright)){
   		if(SENSOR_3<Bright){
   			OnRev(OUT_C);
   			Off(OUT_A);
   		}else if(SNESOR_2<Bright){
   			OnRev(OUT_A);
   			Off(OUT_C);
   		}else{
   			GOFWD(10);
   		}
   	}
   	GOREV(300);*/
   	//ClearSensor(SENSOR_1);
   	/*while(SENSOR_2 <  Bright){
   		OnRev(OUT_A);
   		Float(OUT_C);
   	}*/
   	while(SENSOR_2<Bright){
   		OnRev(OUT_A+OUT_C);
   	}
   	ClearTimer(0);
   	ClearSensor(SENSOR_1);
     	while (abs(SENSOR_1)<=450) {
     		
             	if (SENSOR_2 <  Bright) {   // 醇M醇`醇S潤ッ醇Q&#8222;遵ャ…遵ャ¢遵ャ遵ー遵ャ&#8710;遵ャ´
                   	 	OnRev(OUT_A);
                    		 Off(OUT_C);
             	} 
            	else {                      // 醇M醇`醇S潤ッ遵ャ潤・・遵沛・O遵ャ遵ス遵ャΩ遵ャ&#8710;遵ャ´
                   		Off(OUT_A);
                  	 	OnRev(OUT_C);
             	}
   	 } 
   	 
             Stop;
               
}
/*task arm(){
	while(true){
		OnFwd(OUT_B);
	}
	Off(OUT_B);
}*/
***二個目 [#zc64409d]
#define FWD_AC OnFwd(OUT_A+OUT_C);
#define FWD_A OnFwd(OUT_A);
#define FWD_C OnFwd(OUT_C);
#define REV_AC OnRev(OUT_A+OUT_C);
#define REV_A OnRev(OUT_A);
#define REV_C OnRev(OUT_C);
#define OFF_AC Off(OUT_A+OUT_C);
#define OFF_A Off(OUT_A);
#define OFF_C Off(OUT_C);
#define FLOAT_AC Float(OUT_A+OUT_C);
#define FLOAT_A Float(OUT_A);
#define FLOAT_C Float(OUT_C);
#define THRESHOLD 45
#define ARM_OPEN OnFwd(OUT_B);
#define ARM_CLOSE OnRev(OUT_B);
#define ARM_STOP Off(OUT_B);


task main(){
	SetSensor(SENSOR_1,SENSOR_LIGHT);
	SetSensor(SENSOR_2,SENSOR_ROTATION);
	SetSensor(SENSOR_3,SENSOR_LIGHT);
	
	Wait(3000);
	ClearSensor(SENSOR_2);
	while(abs(SENSOR_2)<=21){
		FWD_AC;
	}
	while(abs(SENSOR_2)<=45){
		line_trace();
	}
	45r();
	OFF_AC;
	Wait(100);
	/*while((SENSOR_1>THRESHOLD) || (SENSOR_3>THRESHOLD)){
		if(SENSOR_1>THRESHOLD){
			REV_C;OFF_A;
		}else if(SENSOR_3>THRESHOLD){
			REV_A;OFF_C;
		}else{
			REV_AC;
		}
	}
	OFF_AC;
	ARM_CLOSE;
	Wait(25);
	ARM_STOP;*/
	ClearSensor(SENSOR_2);
	while(abs(SENSOR_2)<25){
		FWD_AC;
	}
	OFF_AC;
	Wait(100);
	ARM_CLOSE;
	Wait(50);
	ARM_STOP;
	ClearSensor(SENSOR_2);
	/*while(abs(SENSOR_2)<25){
		REV_AC;
	}*/
	while(abs(SENSOR_2)<24){
		REV_AC;
	}
	OFF_AC;
	Wait(100);
	ClearSensor(SENSOR_2);
	ClearTimer(0);
	while(SENSOR_1>THRESHOLD) {
		FWD_C;REV_A;
	}
	ClearSensor(SENSOR_2);
	while(SENSOR_3>THRESHOLD){
		line_trace1();
	}
	ClearSensor(SENSOR_2);
	while(abs(SENSOR_2)<=15){
		FWD_A;REV_C;
	}
	ClearSensor(SENSOR_2);
	while(abs(SENSOR_2)<30){
		line_trace1();
	}
	ClearSensor(SENSOR_2);
	while(abs(SENSOR_2)<5){
		FWD_C;REV_A;
	}
	OFF_AC;
	Wait(10);
	FWD_AC;
	Wait(300);
	OFF_AC;
	ARM_OPEN;Wait(30);
	ARM_STOP;
	while((SENSOR_1>THRESHOLD) || (SENSOR_3>THRESHOLD)){
		REV_AC;
	}
	ClearSensor(SENSOR_2);
	while(abs(SENSOR_2)<=5){
		FWD_C;REV_A;
	}
	while(SENSOR_1>THRESHOLD){
		line_trace3();
	}
	while(abs(SENSOR_2)<=5){
		FWD_C;REV_A;
	}
	ClearSensor(SENSOR_2);
	while(abs(SENSOR_2)<200){
		line_trace3();
	}
	OFF_AC;
	
	/*while((SENSOR_1>THRESHOLD) || (SENSOR_3>THRESHOLD)){
		line_trace();
	}
	while(SENSOR_1<THRESHOLD){
		FWD_A;REV_C;
	}
	ClearSensor(SENSOR_2);
	while(abs(SENSOR_2)<=15){
		line_trace();
	}
	ClearSensor(SENSOR_2);
	while(abs(SENSOR_2)<=5){
		FWD_C;REV_A;
	}
	FWD_AC;Wait(300);
	OFF_AC;
	/*ARM_OPEN;
	Wait(25);
	ARM_STOP;
	while((SENSOR_1>THRESHOLD) ||(SENSOR_3>THRESHOLD)){
		REV_AC;
	}
	while(abs(SENSOR_2)<5){
		FWD_C;REV_A;
	}
	while(SENSOR_1)*/
	
	
	
	
}

sub line_trace(){
	if(SENSOR_1<THRESHOLD){
		FWD_C;REV_A;
	}else if(SENSOR_3<THRESHOLD){
		FWD_A;REV_C;
	}else {
		FWD_AC;
	}
}

sub line_trace1(){
	if(SENSOR_1<THRESHOLD){
		FWD_A;OFF_C;
	}else{
		FWD_C;OFF_A;
	
	}
}
sub line_trace3(){
	if(SENSOR_3<THRESHOLD){
		FWD_C;OFF_A;
	}else{
		FWD_A;OFF_C;
	
	}
}
sub 45r(){
	ClearSensor(SENSOR_2);
	while(abs(SENSOR_2)<5){
		FWD_A;REV_C;
	}
}

sub 45l(){
	ClearSensor(SENSOR_2);
	while(abs(SENSOR_2)<5){
		FWD_C;REV_A;
	}
}


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