[[2005/B2]]
*キャタピラのモーターとライントレース用光センサーのプログラム [#p1275a28]

	int box_color;
	int magaru = 400;
 
 sub cub()
 { 	
	OnFwd(OUT_A+OUT_C);
	while((SENSOR_1 > 45) || (SENSOR_3 > 45))
	{
		if (SENSOR_1 < 45)
		{
			OnFwd(OUT_C);OnRev(OUT_A);
		}
		if (SENSOR_3 < 45)
		{
			OnFwd(OUT_A);OnRev(OUT_C);
		}
		if ((SENSOR_1 > 45) && (SENSOR_3 > 45))
		{
			OnFwd(OUT_A+OUT_C);
		}
	}
	Off(OUT_A+OUT_C);
 }
 	 
 sub hirou_hazime()
 {	
	Off(OUT_A+OUT_C);
	SendMessage(31);Wait(200);
	Off(OUT_A+OUT_C);
	until(Message() == 32);
	OnRev(OUT_A+OUT_C);Wait(100);
	Off(OUT_A+OUT_C);
	SendMessage(33);Wait(300);
	Off(OUT_A+OUT_C);
	until(Message() == 34);
	OnFwd(OUT_A+OUT_C);Wait(70);
 }	
 
 sub kago()
 {	
	OnFwd(OUT_A+OUT_C);Wait(100);
	OnFwd(OUT_A);OnRev(OUT_C);Wait(magaru);
	OnRev(OUT_A+OUT_C);Wait(150);
	Off(OUT_A+OUT_C);
	SendMessage(3);Wait(200);
	
	until (Message() == 21);
	
	while((SENSOR_1 > 45) || (SENSOR_3 > 45))
	{
		OnFwd(OUT_A+OUT_C);
	}
	OnFwd(OUT_C);OnRev(OUT_A);Wait(magaru);
	while((SENSOR_1 > 45) || (SENSOR_3 > 45))
	{
		OnFwd(OUT_A+OUT_C);
	}
 }	
 
 	
 
 task main()
 {
	SetPower(OUT_A,8);
	SetPower(OUT_C,8);
	SetSensor(SENSOR_1, SENSOR_LIGHT);
	SetSensor(SENSOR_3, SENSOR_LIGHT);
	ClearMessage();
	Off(OUT_A+OUT_C);Wait(100);
 
	//hirou
	hirou_hazime();
	
	//susumu
	OnFwd(OUT_A+OUT_C);
	until (SENSOR_1< 45 && SENSOR_3 < 45); 
	OnFwd(OUT_A+OUT_C);Wait(40);
	OnFwd(OUT_C);OnRev(OUT_A);Wait(magaru);
	
	cub();
	OnRev(OUT_A+OUT_C);Wait(100);
	OnFwd(OUT_C);OnRev(OUT_A);Wait(200);
	OnFwd(OUT_A+OUT_C);Wait(2300);
	OnFwd(OUT_C);OnRev(OUT_A);Wait(200);
	OnFwd(OUT_A+OUT_C);Wait(110);
	OnFwd(OUT_A);OnRev(OUT_C);Wait(100);
	OnFwd(OUT_A+OUT_C);Wait(150);
	
	cub();
	
	
	Off(OUT_A+OUT_C);
	SendMessage(10);Wait(200);
	ClearMessage();Wait(200);
	while(Message() !=0 )
	{
		 //box orosu
		if ( Message() ==1 )
		{	
			PlaySound(SOUND_DOWN);Wait(100);
			kago();
			OnFwd(OUT_A);OnRev(OUT_C);Wait(magaru);
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
			OnFwd(OUT_A+OUT_C);
			}
			kago();
			OnFwd(OUT_C);OnRev(OUT_A);Wait(magaru);
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
				OnRev(OUT_A+OUT_C);Wait(20);
			}
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
				OnRev(OUT_A+OUT_C);
			}
			Off(OUT_A+OUT_C);
		}
			
		if ( Message() == 2 )
		{
			PlaySound(SOUND_DOWN);Wait(100);
			kago();
			OnFwd(OUT_A);OnRev(OUT_C);Wait(magaru);
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
				OnFwd(OUT_A+OUT_C);Wait(20);
			}
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
				OnFwd(OUT_A+OUT_C);
			}
			kago();
			OnFwd(OUT_C);OnRev(OUT_A);Wait(magaru);
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
				OnRev(OUT_A+OUT_C);Wait(20);
			}
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
				OnRev(OUT_A+OUT_C);Wait(20);
			}
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
				OnRev(OUT_A+OUT_C);
			}
			Off(OUT_A+OUT_C);
		}	
	
		if ( Message() == 3 )
		{
			PlaySound(SOUND_DOWN);Wait(100);
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
				OnFwd(OUT_A+OUT_C);
			}
			kago();
			OnFwd(OUT_A);OnRev(OUT_C);Wait(magaru);
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
				OnFwd(OUT_A+OUT_C);
			}
			kago();
			OnFwd(OUT_C);OnRev(OUT_A);Wait(magaru);
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
				OnRev(OUT_A+OUT_C);Wait(20);
			}
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
				OnRev(OUT_A+OUT_C);Wait(20);
			}
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
				OnRev(OUT_A+OUT_C);
			}
			Off(OUT_A+OUT_C);
		}	
	
		if ( Message() == 4 )
		{
			PlaySound(SOUND_DOWN);Wait(100);
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
				OnFwd(OUT_A+OUT_C);
			}		
			kago();
			OnFwd(OUT_A);OnRev(OUT_C);Wait(magaru);
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
				OnRev(OUT_A+OUT_C);
			}
			kago();
			OnFwd(OUT_C);OnRev(OUT_A);Wait(magaru);
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
				OnRev(OUT_A+OUT_C);
			}
			Off(OUT_A+OUT_C);
		}
			
		if ( Message() == 5 )
		{
			PlaySound(SOUND_DOWN);Wait(100);
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
				OnFwd(OUT_A+OUT_C);Wait(20);
			}
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
				OnFwd(OUT_A+OUT_C);
			}
			kago();
			OnFwd(OUT_A);OnRev(OUT_C);Wait(magaru);
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
				OnRev(OUT_A+OUT_C);
			}
			kago();
			OnFwd(OUT_C);OnRev(OUT_A);Wait(magaru);
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{	
				OnRev(OUT_A+OUT_C);Wait(20);
			}
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
				OnRev(OUT_A+OUT_C);
			}
			Off(OUT_A+OUT_C);
		}	
	
		if ( Message() == 6 )
		{
			PlaySound(SOUND_DOWN);Wait(100);
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
				OnFwd(OUT_A+OUT_C);Wait(20);
			}
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
				OnFwd(OUT_A+OUT_C);
			}
			kago();
			OnFwd(OUT_A);OnRev(OUT_C);Wait(magaru);
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
				OnRev(OUT_A+OUT_C);Wait(20);
			}
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
				OnRev(OUT_A+OUT_C);
			}
			kago();
			OnFwd(OUT_C);OnRev(OUT_A);Wait(magaru);
			while((SENSOR_1 > 45) || (SENSOR_3 > 45))
			{
				OnRev(OUT_A+OUT_C);
			}
			
			Off(OUT_A+OUT_C);	
		}
	}		
	ClearMessage();
	
	//modoru
	OnFwd(OUT_A);OnRev(OUT_C);Wait(magaru * 2);
	cub();
 }


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