[[戻る>2005/A6]]


*プログラムメモ [#d55d5fa5]


#define getta_time 200
#define otosu_time1 200
#define otosu_time2 100

#define green_white 48
#define brack_green 38
 

int Mes;

sub Getta(){
	OnFwd(OUT_A);
	Wait(getta_time);
	Off(OUT_A);
	SendMessage(1);
	}

sub otosu(){
	OnRev(OUT_A);
	Wait(otosu_time1);
	Off(OUT_A);
	OnFwd(OUT_C);
	Wait(otosu_time2);
	Off(OUT_C);
	}

task main(){
	Getta();
	
	
	while(true){
	while(true){
		ClearMessage();
		until (Message() != 0);
		
		if(Message() == 5)Mes=5; break;//otosite
		if(Message() == 6)Mes=6; break;//totte
		if(Message() == 7)Mes=7; break;//totte
		}
		
		if(Mes==5){
			otosu();
			
			}
		if(Mes==6){
			Getta();
			
			
			}
		if(Mes==7){
			SetSensor(SENSOR_1,SENSOR_LIGHT);
			
			if((SENSOR_1 <= green_white) && (SENSOR_1 >= brack_green)){
				SendMessage(2);Wait(500);
				}
			if(SENSOR_1 > green_white){
				SendMessage(3);Wait(500);
				}
			if(SENSOR_1 < brack_green) {
				SendMessage(4);Wait(500);
				}
			
			}
		}
}
			







#define line 47
#define  200//90do
#define go_time 100//boxmade
#define box_time 50//berutokonbea

int Mes;
int t;
sub turn_left(){
	OnFwd(OUT_C); Off(OUT_A);
	Wait(10);
	until((SENSOR_1 >  line) && (SENSOR_3 > line));
	OnFwd(OUT_C);
	until(SENSOR_1 < line);
	OnFwd(OUT_A+OUT_C);
	until(SENSOR_3 <  line) ;
	Off(OUT_A+OUT_C);
}
sub turn_right(){
	OnFwd(OUT_A); Off(OUT_C);
	Wait(10);
	until((SENSOR_1 >  line) && (SENSOR_3 > line));
	OnFwd(OUT_A);
	until(SENSOR_3 < line);
	OnFwd(OUT_A+OUT_C);
	until(SENSOR_1 <  line);
	Off(OUT_A+OUT_C);
}



sub line_go(){
	SetSensor(SENSOR_1,SENSOR_LIGHT);//left
	SetSensor(SENSOR_3,SENSOR_LIGHT);//right 
	
	OnFwd(OUT_A+OUT_C);
	Wait(50);
	
	while(true){
	if((SENSOR_1 <  line) && (SENSOR_3 > line)){
		OnFwd(OUT_C);
		Off(OUT_A);
		until(SENSOR_1 > line);
		}
	
	if((SENSOR_1 > line) && (SENSOR_3 < line)){
		OnFwd(OUT_A);
		Off(OUT_C);
		until(SENSOR_3 > line);
		}
		
	if((SENSOR_1 < line) && (SENSOR_3 < line)){
		Off(OUT_A+OUT_C);
		}
	
	else{
		OnFwd(OUT_A+OUT_C);
		}
	}
}
sub line_back(){
	SetSensor(SENSOR_1,SENSOR_LIGHT);//left
	SetSensor(SENSOR_3,SENSOR_LIGHT);//right 
	
	OnRev(OUT_A+OUT_C);
	Wait(50);	

	while(true){
	if((SENSOR_1 <  line) && (SENSOR_3 > line)){
		OnRev(OUT_C);
		Off(OUT_A);
		until(SENSOR_1 > line);
		}
	
	if((SENSOR_1 > line) && (SENSOR_3 < line)){
		OnRev(OUT_A);
		Off(OUT_C);
		until(SENSOR_3 > line);
		}
		
	if((SENSOR_1 < line) && (SENSOR_3 < line)){
		Off(OUT_A+OUT_C);
		}
	
	else{
		OnRev(OUT_A+OUT_C);
		}
	}
}



task main()
{
	SetSensor(SENSOR_1,SENSOR_LIGHT);
	SetSensor(SENSOR_3,SENSOR_LIGHT);

	while(true){
		ClearMessage();
		until (Message() != 0);
		
		if(Message() == 1)Mes=1; break;//toriawatta
		if(Message() == 2)Mes=2; break;//green dayo
		if(Message() == 3)Mes=3; break;//white dayo
		if(Message() == 4)Mes=4; break;//brack dayo
		}
		
	if(Mes==1){
		OnRev(OUT_A+OUT_C);
		until((SENSOR_1 < line) && (SENSOR_3 < line));
		OnFwd(OUT_C); OnRev(OUT_A);
		until((SENSOR_1 > line) && (SENSOR_3 > line));
		repeat(2){
			line_go();
		}
		turn_right();
		OnFwd(OUT_A+OUT_C);
		until(SENSOR_1 < line);
		turn_left();
		line_go();
	}
	
	
	repeat(3){
		SendMessage(7);
		while(true){
		ClearMessage();
		until (Message() != 0);
		
		if(Message() == 1)Mes=1; break;//toriawatta
		if(Message() == 2)Mes=2; break;//green dayo
		if(Message() == 3)Mes=3; break;//white dayo
		if(Message() == 4)Mes=4; break;//brack dayo
		}
		if(Mes == 2){//green
			turn_left();
			OnRev(OUT_A+OUT_C);Wait(go_time);
			SendMessage(5); Wait(500);//owattayo
			OnFwd(OUT_A+OUT_C);Wait(go_time);
			turn_right();
			OnFwd(OUT_B);Wait(box_time);
		}
		else if(Mes == 3){//white
			line_go();
			turn_left();
			OnRev(OUT_A+OUT_C);Wait(go_time);
			SendMessage(5); Wait(500);//owwatayo
			OnFwd(OUT_A+OUT_C);Wait(go_time);
			turn_right();
			line_back();
			OnFwd(OUT_B);Wait(box_time);
		}
		else if(Mes == 4){//brack
			line_go();
			line_go();
			turn_left();
			OnRev(OUT_A+OUT_C);Wait(go_time);
			SendMessage(5); Wait(500);//owattayo
			OnFwd(OUT_A+OUT_C);Wait(go_time);
			turn_right();
			line_back();
			line_back();
			OnFwd(OUT_B);Wait(box_time);
		}
	}

	line_back();//go home
	turn_left();
	
	SendMessage(6); Wait(500);//totte
	
	while(true){
		ClearMessage();
		until (Message() != 0);
		
		if(Message() == 1)Mes=1; break;//toriawatta
		if(Message() == 2)Mes=2; break;//green dayo
		if(Message() == 3)Mes=3; break;//white dayo
		if(Message() == 4)Mes=4; break;//brack dayo
		}
	if(Mes==1){
		OnFwd(OUT_A+OUT_C);
		until((SENSOR_1 < line) && (SENSOR_3 < line));
		OnFwd(OUT_A); OnRev(OUT_C);
		until((SENSOR_1 > line) && (SENSOR_3 > line));
		
		line_go();
		
		OnFwd(OUT_A); OnRev(OUT_C);
		Wait();
		OnFwd(OUT_A+OUT_C);
		until(SENSOR_1 < line);
		turn_left();
		line_go();
	}
	
	repeat(3){
				SendMessage(7);
		while(true){
		ClearMessage();
		until (Message() != 0);
		
		if(Message() == 1)Mes=1; break;//toriawatta
		if(Message() == 2)Mes=2; break;//green dayo
		if(Message() == 3)Mes=3; break;//white dayo
		if(Message() == 4)Mes=4; break;//brack dayo
		}
		if(Mes == 2){//green
			turn_left();
			OnRev(OUT_A+OUT_C);Wait(go_time);
			SendMessage(5); Wait(500);//owattayo
			OnFwd(OUT_A+OUT_C);Wait(go_time);
			turn_right();
			OnFwd(OUT_B);Wait(box_time);
		}
		else if(Mes == 3){//white
			line_go();
			turn_left();
			OnRev(OUT_A+OUT_C);Wait(go_time);
			SendMessage(5); Wait(500);//owwatayo
			OnFwd(OUT_A+OUT_C);Wait(go_time);
			turn_right();
			line_back();
			OnFwd(OUT_B);Wait(box_time);
		}
		else if(Mes == 4){//brack
			line_go();
			line_go();
			turn_left();
			OnRev(OUT_A+OUT_C);Wait(go_time);
			SendMessage(5); Wait(500);//owattayo
			OnFwd(OUT_A+OUT_C);Wait(go_time);
			turn_right();
			line_back();
			line_back();
			OnFwd(OUT_B);Wait(box_time);
		}
	}

	line_back();//go home
	turn_left();

}










-ロボコン
 #define line 47
 #define turn_time 200
 #define go_time 100
 #define box_time 50
 int move_time;
 int Mes;
 sub turn_left(){
 	OnFwd(OUT_C); OnRev(OUT_A);
 }
 sub turn_right(){
 	OnFwd(OUT_A); OnRev(OUT_C);
 }
 
 sub wall_go(){
 	
 
 
 }
 
 sub line_go(){
 	SetSensor(SENSOR_1,SENSOR_LIGHT);//left
 	SetSensor(SENSOR_3,SENSOR_LIGHT);//right 
 	
 	OnFwd(OUT_A+OUT_C);
 	
 	while(true){
 	if((SENSOR_1 <  line) && (SENSOR_3 > line)){
 		OnFwd(OUT_C);
 		Off(OUT_A);
 		until(SENSOR_1 > line);
 		}
 	
 	if((SENSOR_1 > line) && (SENSOR_3 < line)){
 		OnFwd(OUT_A);
 		Off(OUT_C);
 		until(SENSOR > line);
 		}
 		
 	if((SENSOR_1 < line) && (SENSOR_3 < line)){
 		break;
 		}
 	
 	else{
 		OnFwd(OUT_A+OUT_C);
 		}
 	}
 }
 sub line_back(){
 	SetSensor(SENSOR_1,SENSOR_LIGHT);//left
 	SetSensor(SENSOR_3,SENSOR_LIGHT);//right 
 	
 	OnRev(OUT_A+OUT_C);
 	
 	while(true){
 	if((SENSOR_1 <  line) && (SENSOR_3 > line)){
 		OnRev(OUT_C);
 		Off(OUT_A);
 		until(SENSOR_1 > line);
 		}
 	
 	if((SENSOR_1 > line) && (SENSOR_3 < line)){
 		OnRev(OUT_A);
 		Off(OUT_C);
 		until(SENSOR > line);
 		}
 		
 	if((SENSOR_1 < line) && (SENSOR_3 < line)){
 		break;
 		}
 	
 	else{
 		OnRev(OUT_A+OUT_C);
 		}
 }
 
 sub GetMessage(){
 	while(true){
 		ClearMessage();
 		until (Message() != 0);
 		
 		if(Message() == 1)Mes=1;//toriawatta
 		if(Message() == 2)Mes=2;//green dayo
 		if(Message() == 3)Mes=3;//white dayo
 		if(Message() == 4)Mes=4;//brack dayo
 		}
 
 }
 sub bunbetu(){
 	repeat(3){
 		GetMessage();
 		if(Mes == 2){//green
 			line_go();
 			turn_right(turn_time);
 			OnFwd(OUT_A+OUT_C);Wait(go_time);
 			SendMessage(5); Wait(500);//owattayo
 			OnRev(OUT_A+OUT_C);Wait(go_time);
 			turn_left(turn_time);
 			line_back();
 			OnFwd(OUT_B);Wait(box_time);
 		}
 		else if(Mes == 3){//white
 			line_go();
 			line_go();
 			turn_right(turn_time);
 			OnFwd(OUT_A+OUT_C);Wait(go_time);
 			SendMessage(5); Wait(500);//owwatayo
 			OnRev(OUT_A+OUT_C);Wait(go_time);
 			turn_left(turn_time);
 			line_back();
 			line_back();
 			OnFwd(OUT_B);Wait(box_time);
 		}
 		else if(Mes == 4){//brack
 			line_go();
 			line_go();
 			line_go();
 			turn_right(turn_time);
 			OnFwd(OUT_A+OUT_C);Wait(go_time);
 			SendMessage(5); Wait(500);//owattayo
 			OnRev(OUT_A+OUT_C);Wait(go_time);
 			turn_left(turn_time);
 			line_back();
 			line_back();
 			line_back();
 			OnFwd(OUT_B);Wait(box_time);
 		}
 	}
 
 }
 task main(){
 	SetSensor(SENSOR_1,SENSOR_LIGHT);
 	SetSensor(SENSOR_3,SENSOR_LIGHT);
 
 	GetMessage();
 	if(Mes==1){
 		OnFwd(OUT_A+OUT_C)
 		until((SENSOR_1 < line) && (SENSOR_3 < line));
 		turn_right();
 		until((SENSOR_1 > line) && (SENSOR_3 > line));
 		repeat(3){
 			line_go();
 		}
 		turn_right();
 		Wait(turn_time);
 		OnFwd(OUT_A+OUT_C);
 		until(SENSOR_1 < line);
 		turn_left();
 		Wait(turn_time);
 		line_go();
 	}
 	
 	bunbetu();
 
 	line_back();//go home
 	turn_left(turn_time);
 	
 	SendMessage(6); Wait(500);//totte
 	
 	GetMessage();
 	if(Mes==1){
 		OnFwd(OUT_A+OUT_C)
 		until((SENSOR_1 < line) && (SENSOR_3 < line));
 		turn_right();
 		until((SENSOR_1 > line) && (SENSOR_3 > line));
 		
 		line_go();
 		
 		turn_right();
 		Wait(turn_time);
 		OnFwd(OUT_A+OUT_C);
 		until(SENSOR_1 < line);
 		turn_left();
 		Wait(turn_time);
 		line_go();
 	}
 	
 	bunbetu();
 
 	line_back();//go home
 	turn_left(turn_time);
 
 }



- スケーターズワルツ
 
 #define Do 523
 #define Re 587
 #define Mi 659
 #define Fa 698
 #define So 784
 #define Ra 880
 #define Si 988
 #define Doo 1047
 #define Ree 1175
 
 task play_music()
 { 
 
 	while(true){
 		PlayTone(Mi,120);Wait(120);
 		
 		PlayTone(So,80);Wait(80);
 		PlayTone(Ra,40); Wait(45);
 		
 		PlayTone(Ra,240);Wait(245);
 		
 		PlayTone(Fa,120);Wait(120);
 		
 		PlayTone(Ra,80);Wait(80);
 		PlayTone(Si,40);Wait(45);
 		
 		PlayTone(Si,240);Wait(245);
 		
 		PlayTone(Ree,120);Wait(120);
 
 		PlayTone(Doo,80);Wait(80);
 		PlayTone(Mi,40);Wait(45);
 		
 		PlayTone(So,120);Wait(120);
 		
 		PlayTone(Fa,80);Wait(80);
 		PlayTone(Mi,40);Wait(45);
 		
 		PlayTone(Mi,120);Wait(120);
 		
 		PlayTone(Re,120);Wait(120);
 		
 		PlayTone(Do,150);Wait(160);
 		
 		PlayTone(So,15);Wait(20);
 		PlayTone(Doo,15);Wait(20);
 		
 		PlayTone(Ra,15);Wait(20);
 		PlayTone(Doo,15);Wait(20);
 		PlayTone(So,15);Wait(20);
 		PlayTone(Doo,15);Wait(20);
 		PlayTone(Ra,15);Wait(20);
 		PlayTone(Doo,15);Wait(20);
 		
 		PlayTone(So,15);Wait(20);
 		PlayTone(Doo,15);Wait(20);
 		PlayTone(Ra,15);Wait(20);
 		PlayTone(Doo,15);Wait(20);
 		PlayTone(So,15);Wait(20);
 		PlayTone(Doo,15);Wait(20);
 		
 		PlayTone(Ra,15);Wait(20);
 		PlayTone(Doo,15);Wait(20);
 		PlayTone(So,40);Wait(40);
 		
 		PlayTone(Si,30);Wait(40);
 		PlayTone(Si,40);Wait(40);
 		
 		PlayTone(So,40);Wait(40);
 		PlayTone(Si,30);Wait(40);
 		PlayTone(Si,40);Wait(40);
 		
 		PlayTone(So,15);Wait(20);
 		PlayTone(Ree,15);Wait(20);
 		PlayTone(Ra,15);Wait(20);
 		PlayTone(Ree,15);Wait(20);
 		PlayTone(So,15);Wait(20);
 		PlayTone(Ree,15);Wait(20);
 		
 		PlayTone(Ra,15);Wait(20);
 		PlayTone(Ree,15);Wait(20);
 		PlayTone(So,15);Wait(20);
 		PlayTone(Ree,15);Wait(20);
 		PlayTone(Ra,15);Wait(20);
 		PlayTone(Ree,15);Wait(20);
 		
 		PlayTone(So,40);Wait(40);
 		PlayTone(Doo,30);Wait(40);
 		PlayTone(Doo,40);Wait(40);
 		
 		PlayTone(So,40);Wait(40);
 		PlayTone(Doo,30);Wait(40);
 		PlayTone(Doo,40);Wait(40);
 	}
 }
 
 task main(){
 	start play_music ;
 	
 }





- 一番明るい方を向くプログラム

 int LIGHT_=0;	//一番明るいところの値を入れる
 int TIME_LIGHT=0;//一番明るいところまで回るまでの時間
 int RUN_TIME=450;//一回転する時間
 
 task main(){
 
 	SetSensor(SENSOR_1, SENSOR_LIGHT);
 	ClearTimer(0);
 	
 	while (FastTimer(0) <= RUN_TIME) { //一回転するまで繰り返す
 		if ( SENSOR_1 > LIGHT_ ) { //もし今まで記録した値より明るかったら
 			LIGHT_ = SENSOR_1 ; //関数にその明るさを記録
 			TIME_LIGHT = FastTimer(0); //関数にそのときまでの時間を記録
 		}
 		OnFwd(OUT_A);
 		OnRev(OUT_C);
 	}
 	ClearTimer(0);
 	while (FastTimer(0) <= TIME_LIGHT) {// 一番明るかった場所まで回る
 		OnFwd(OUT_A);
 		OnRev(OUT_C);
 	}
 	Off(OUT_A+OUT_C)
 }

- プログラム修正
 int LIGHT_MAX=0;	//一番明るいところの値を入れる
 int TIME_LIGHT=0;//一番明るいところまで回るまで
 int RUN_TIME;//一回転する時間
 int cnt=0;//カウンター
 
 task main(){
 
 	SetSensor(SENSOR_2, SENSOR_LIGHT);
 	ClearTimer(0);
 	
 	OnFwd(OUT_A);
 	OnRev(OUT_C);
 	
 	repeat(50){
 		if(SENSOR_2 > LIGHT_MAX){
 			LIGHT_MAX = SENSOR_2;//一番明るいところの値が入る
 			TIME_LIGHT = cnt;//一番明るいところまでかかった時間が入る	
 		}
 	cnt++;
 	Wait(5);
 	}
 	OnFwd(OUT_C);
 	OnRev(OUT_A);
 	RUN_TIME = 250-(TIME_LIGHT-1)*5;//逆回転する時間
 	Wait(RUN_TIME);
 	Off(OUT_A+OUT_C);
 	
 }


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