[[2013a/Member]]

*ロボットの紹介 [#t1e80d59]

test
1
2

3

**4 [#xcc2cd10]

-5-1
-5-2

*コース攻略法 [#u89cc0ea]

*プログラムの説明 [#sdeaed12]
 #define CENTER 45
 #define CCC 8300
 #define SPEED_H 46
 #define SPEED_L 26
 #define turn_R Off(OUT_B); OnFwd(OUT_C,SPEED_L);
 #define turn_L Off(OUT_C); OnFwd(OUT_B,SPEED_L);
 #define turn_SR OnRev(OUT_B,SPEED_L); OnFwd(OUT_C,SPEED_L);
 #define turn_SL OnRev(OUT_C,SPEED_L); OnFwd(OUT_B,SPEED_L);
 #define go_F OnFwd(OUT_BC,SPEED_H);
 #define STEP 1
 #define nMAX 300
 #define short_break Off(OUT_BC);Wait(1000);
 #define CROSS_TIME 400
 #define cross_line OnFwd(OUT_B,SPEED_L);OnFwd(OUT_C,SPEED_L);Wait(CROSS_TIME);short_break;
 #define cross OnFwd(OUT_C,SPEED_L);OnFwd(OUT_B,SPEED_L);Wait(CROSS_TIME+200);short_break;
 #define go_b OnFwd(OUT_B,-50);OnFwd(OUT_C,-50);

 task main() 
 {
	SetSensorLight(S1);
	SetSensorTouch(S3);
	int n=0,count = 0;
	long t = 0;
	
	if(t >= 0){
		t = CurrentTick();
		while(true){
			if(SENSOR_1 < CENTER-9){
				if(SENSOR_1 < CENTER-19){
					turn_L;
				}else{
					turn_SL;
				}
			}else if(SENSOR_1 < CENTER+2){
				//go_F;
			}else{
				if(SENSOR_1 < CENTER){
					turn_SR;
				}else{
					turn_R;
				}
			}
			Wait(STEP);
			if(CurrentTick() - t > 14820){
				break;
			}
		}
	}
	OnFwd(OUT_A,-30);
	Wait(600);
	Off(OUT_A);
	Off(OUT_B); OnFwd(OUT_C,SPEED_L+10);
	Wait(1000);
	
	while(true) {
		while(n < nMAX) {
			if(SENSOR_1 < CENTER-12) {
				turn_SR;
				n++;
			} else {
				if(SENSOR_1 < CENTER-6) {
					turn_R;
				} else if(SENSOR_1 < CENTER+6) {
					go_F;
				} else if(SENSOR_1 < CENTER+12) {
					turn_L;
				} else {
					turn_SL;
				}
				n=0;
			}
			Wait(STEP);
		}
		short_break;
		turn_SL;Wait((nMAX)*STEP-100);
		cross;
		n=0;
		break;
	}	

	while(true) {

		while(n < nMAX) {
			if(SENSOR_1 < CENTER-12) {
				turn_SL;
				n++;
			} else {
				if(SENSOR_1 < CENTER-6) {
					turn_L;
				} else if(SENSOR_1 < CENTER+6) {
					go_F;
				} else if(SENSOR_1 < CENTER+12) {
					turn_R;
				} else {
					turn_SR;
				}
				n=0;
			}
			Wait(STEP);
		}
		short_break;
		turn_SR;Wait(nMAX*STEP);
		cross_line;
		n=0;
		count++;
		if(count == 3) break;
	}
	
	t=CurrentTick();
	while(true) {
		while(CurrentTick()-t <= CCC) {
			if(SENSOR_1 < CENTER-12) {
				if(CurrentTick()-t >= CCC){
					break;
				}
				turn_SL;
			} else {
				if(CurrentTick()-t >= CCC){
					break;
				}
				if(SENSOR_1 < CENTER-6) {
					if(CurrentTick()-t >= CCC){
						break;
					}
					turn_L;
				} else if(SENSOR_1 < CENTER+6) {
					go_F;
				} else if(SENSOR_1 < CENTER+12) {
					if(CurrentTick()-t >= CCC){
						break;
					}
					turn_R;
				} else {
					turn_SR;
				}
				if(CurrentTick()-t >= CCC){
					break;
				}
			}
			Wait(STEP);
		}
		if(CurrentTick()-t >= CCC){
			break;
		}
	}
	go_F;
	Wait(300);
	OnFwd(OUT_A,30);
	Wait(300);
	Off(OUT_A);
	go_b;
	Wait(300);
	turn_SR;
	Wait(2000);

	while(true) {
		while(n < nMAX) {
			if(SENSOR_1 < CENTER-12) {
				turn_SL;
			} else {
				if(SENSOR_1 < CENTER-6) {
					turn_L;
				} else if(SENSOR_1 < CENTER+6) {
					go_F;
				} else if(SENSOR_1 < CENTER+12) {
					turn_R;
				} else {
					turn_SR;
				}
				n=0;
			}
			Wait(STEP);
		}
	}
	
*まとめ [#se9d32be]


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