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

#define eye_L SENSOR_1
#define eye_R SENSOR_3
#define  cont 45
#define time 2
#define new_count ClearSensor(SENSOR_2) 
sub follow_line() 
{
	if ((eye_L >= cont ) && (eye_R >= cont )){
		OnRev(OUT_A+OUT_C); Wait(time); Off(OUT_A+OUT_C); 
	}
	else if ((eye_L >= cont ) && (eye_R  <= cont )){
		OnRev(OUT_A); Wait(time); Off(OUT_A);
	}
	else if ((eye_L <= cont ) && (eye_R >= cont )){
		OnRev(OUT_C); Wait(time); Off(OUT_C); 
	}
	else {
		OnRev(OUT_A+OUT_C); Wait(time); Off(OUT_A+OUT_C); 
	}
}

task main ()
{
	SetSensor(eye_L, SENSOR_LIGHT);
	SetSensor(eye_R, SENSOR_LIGHT);
	SetSensor(SENSOR_2,SENSOR_ROTATION);
	Wait(20);
new_count;
	while ( abs(SENSOR_2) <= 35 )
		{
		follow_line();
		}
 Off(OUT_A+OUT_C); Wait(50);
new_count;
	while ( abs(SENSOR_2) <= 3 )
		{OnRev(OUT_A); OnFwd(OUT_C);}
OnRev(OUT_A); OnFwd(OUT_C); Wait(5);
OnRev(OUT_A+OUT_C); Wait(45); Off(OUT_A+OUT_C); Wait(100);
OnRev(OUT_B); Wait(200); Off(OUT_B); Wait(100);
OnFwd(OUT_A); OnRev(OUT_C); Wait(15); 
OnRev(OUT_A); OnFwd(OUT_C); Wait(15);   Off(OUT_A+OUT_C);
OnFwd(OUT_A+OUT_C); Wait(60); Off(OUT_A+OUT_C); Wait(100);

new_count;
	while ( abs(SENSOR_2) <= 3 )
		{
		OnFwd(OUT_A); OnRev(OUT_C);
		}
Off(OUT_A+OUT_C); Wait(100);
OnFwd(OUT_A); OnRev(OUT_C); Wait(10);
OnRev(OUT_A); OnFwd(OUT_C); Wait(10);   Off(OUT_A+OUT_C);
OnRev(OUT_A+OUT_C); Wait(5); Off(OUT_A+OUT_C); Wait(100);
OnFwd(OUT_A); OnRev(OUT_C); Wait(5); Off(OUT_A+OUT_C);
new_count;
	while ( abs(SENSOR_2) <= 27)
		{
		follow_line();
		}
PlaySound(1); Off(OUT_A+OUT_C); Wait(100);
new_count;
	while ( abs(SENSOR_2) <= 10)
		{
		OnFwd(OUT_A+OUT_C); 
		}
Off(OUT_A+OUT_C); Wait(100); 
OnRev(OUT_A); OnFwd(OUT_C); Wait(30);   Off(OUT_A+OUT_C);
Off(OUT_A+OUT_C);  Wait(20); 
OnRev(OUT_A+OUT_C); Wait(30); Off(OUT_A+OUT_C); Wait(50);
new_count;
	while ( abs(SENSOR_2) <= 45  )
		{
		follow_line();
		}
Wait(50); OnFwd(OUT_A+OUT_C); Wait(20); Off(OUT_A+OUT_C);
	repeat(3)
		{
		OnRev(OUT_A); OnFwd(OUT_C); Wait(5); Off(OUT_A+OUT_C); Wait(50);
		OnRev(OUT_A+OUT_C); Wait(10); Off(OUT_A+OUT_C); Wait(50);
		OnRev(OUT_A); OnFwd(OUT_C); Wait(10); Off(OUT_A+OUT_C); Wait(50);
		}
		
PlaySound(1); Off(OUT_A+OUT_C);
new_count;
	while ( abs(SENSOR_2) <= 51 )
		{
		follow_line();
		}
OnFwd(OUT_B); Wait(190); Off(OUT_B); Wait(100);
OnFwd(OUT_A+OUT_C); Wait(40); Off(OUT_A+OUT_C);
PlaySound(1); Off(OUT_A+OUT_C);
new_count;
	while ( abs(SENSOR_2) <= 3 )
		{
		OnRev(OUT_A); OnFwd(OUT_C);
		}
Off(OUT_A+OUT_C);
OnRev(OUT_A); OnFwd(OUT_C); Wait(7);
Off(OUT_A+OUT_C); Wait(20);
new_count;
	while ( abs(SENSOR_2) <= 45 )
		{
		follow_line();
		}
OnRev(OUT_C); Wait(80);
OnRev(OUT_A+OUT_C); Wait(100); Off(OUT_A+OUT_C);
}

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