[[2009b]]


//CENTER:只今作成中

目次
#contents
*チーム [#l02624f3]
チーム名「ロクデナシラブソディー」
メンバー
 その壱 SHIMA 
 その弐 なかみゅう 
 その参 閣下


*ロボットの作成 [#xac09bd4]
**方針 [#j6aa403e]

***台車 。 [#i95dc0b5]
***アーム [#n6f9e40c]

**改良前の作品 [#u8e14c08]
**完成 [#n216b881]
**工夫した点・苦労した点など [#u29ed85b]

**問題点 [#mb65bd46]

*プログラム [#y4a54e69]
 #define THRESHOLD 40                                //明るさの識別値   
 #define go_forward OnFwd(OUT_A+OUT_C);              //前進のプログラム
 #define go_back OnRev(OUT_A+OUT_C);                 //後進プログラム
 #define turn_right OnFwd(OUT_A);OnRev(OUT_C);       //右旋回プログラム
 #define turn_left OnRev(OUT_A);OnFwd(OUT_C);        //左旋回のプログラム
 #define rs1_1 15                                    //part1_1を前進するための回転数
 #define rs1_2 -90                                   //part1_2を後進するための回転数
 #define rs2_1 15                                    //part2_1を前進するための回転数
 #define rs2_2 17                                    //part2_2を前進するための回転数
 #define rs4 8                                       //part4とpart5を前進するための回転数
 #define rs6 -12                                     //part6を後進するための回転数
 #define rs7 20                                      //part7を前進するための回転数
 #define rs10 50                                     //part10を後進するための回転数
 #define rs8 20                                      //part8を前進するための回転数
 #define rr 5                                        //90°右旋回するための回転数
 #define rl -5                                       //90°左旋回するための回転数
 #define rr2 3                                       //右へ少し旋回するための回転数
 #define rl2 -9                                      //左へ少し旋回するための回転数
 #define rr4 2                                       //part4で右へ少し旋回するための回転数
 #define rr8 8                                       //part8で右へ少し旋回するための回転数
 #define arm1 OnFwd(OUT_B);                          //アーム(ピンポン玉回収)
 #define arm2 OnRev(OUT_B);Wait(1000);Float(OUT_B);  //アーム(ピンポン玉排出)   
 
 task main ()
 {
 	SetPriority(1);
    
 	SetSensor(SENSOR_1,SENSOR_LIGHT);                     //SENSOR1は光センサー
 	SetSensor(SENSOR_2, SENSOR_ROTATION);                 //SENSOR2は回転センサー
 	SetSensor(SENSOR_3,SENSOR_LIGHT);                     //SENSOR3は光センサー
 	int n;
 	n=0;
 	
 	go_forward;Wait(150);Off(OUT_A+OUT_C);			  //part1始まり 
 	start follow_line_forward;until(SENSOR_2>=rs1);	  //センサー2がrs1以上になるまで前進
 	stop follow_line_back;Off(OUT_A+OUT_C);			  //part1終わり   
 
	while(n<=5)                                            //nが5回以下なら以下のプログラムを行う
 		{
 		ClearSensor(SENSOR_2);                                   //part2始まり
 		turn_right;until(SENSOR_2>=rr);Off(OUT_A+OUT_C);         //右へセンサー2がrr以上になるまで旋回
 		go_forward;Wait(50);Off(OUT_A+OUT_C);                    //少し前進
 		ClearSensor(SENSOR_2);
 		turn_right;until(SENSOR_2>=rr);Off(OUT_A+OUT_C);         //右へセンサー2がrr以上になるまで旋回
 		arm1;                                                    //アームを起動
 		ClearSensor(SENSOR_2);
 		go_forward;until(SENSOR_2>=rs2_1);Off(OUT_A+OUT_C);      //センサー2がrs2_1以上になるまで前進
 		ClearSensor(SENSOR_2);
 		go_forward;until(SENSOR_2>=rs2_2);Off(OUT_A+OUT_C);      //センサー2がrs2_2以上になるまで前進
 		Wait(200);                                               //2秒間待機
 									           //part2終わり
 
 		ClearSensor(SENSOR_2);                                   //part3開始
 		go_back;until(SENSOR_2<=-rs2_2);Off(OUT_A+OUT_C);        //センサー2が-rs2_2以下になるまで後進
 										     //part3終わり
 
 		ClearSensor(SENSOR_2);                                   //part4開始
 		turn_right;until(SENSOR_2>=rr4);Off(OUT_A+OUT_C);        //センサー2がrr4以上になるまで右旋回
 		ClearSensor(SENSOR_2);
 		go_forward;until(SENSOR_2>=rs4);Off(OUT_A+OUT_C);        //センサー2がrs4以上になるまで前進
 		Wait(200);                                               //2秒間待機
 		ClearSensor(SENSOR_2);
 		go_back;until(SENSOR_2<=-rs4);Off(OUT_A+OUT_C);          //センサー2が-rs4以下になるまで後進
									           //part4終わり
 
 		ClearSensor(SENSOR_2);                                   //part5開始
 		turn_left;until(SENSOR_2<=rl2);Off(OUT_A+OUT_C);         //センサー2がrl2以下になるまで左旋回
 		ClearSensor(SENSOR_2);
 		go_forward;until(SENSOR_2>=rs4);Off(OUT_A+OUT_C);        //センサー2がrs4以上になるまで前進
 		Wait(300);                                               //3秒間待機
 		ClearSensor(SENSOR_2);
 		go_back;until(SENSOR_2<=-rs4);Off(OUT_A+OUT_C);          //センサー2が-rs4以下になるまで後進
 									           //part5終わり

 										     //part6開始 
 		go_back;until(SENSOR_2<=rs6);Off(OUT_A+OUT_C);           //センサー2が-rs2_1以下になるまで後進
 		Float(OUT_B);                                            //アーム停止
 									           //part6終了

 		ClearSensor(SENSOR_2);                                   //part7開始
 		turn_left;until(SENSOR_2<=rl);Off(OUT_A+OUT_C);          //センサー2がrl以下になるまで左旋回
 		go_back;Wait(50);Off(OUT_A+OUT_C);                       //少し後退
 		ClearSensor(SENSOR_2);
 		turn_left;until(SENSOR_2<=rl);Off(OUT_A+OUT_C);          //センサー2がrl以下になるまで左旋回
 		start follow_line_forward;until(SENSOR_2>=rs7);Off(OUT_A+OUT_C);
										     //センサー2がrs10以上になるまで前進
 										     //part7終了       
 
 		ClearSensor(SENSOR_2);                                   //part8開始
 		turn_right;until(SENSOR_2>=rr8);Off(OUT_A+OUT_C);        //センサー2がrr以上になるまで右旋回
 		ClearSensor(SENSOR_2);
 		go_forward;Wait(300);Off(OUT_A+OUT_C);        //センサー2がrs8以上になるまで前進
 		PlaySound(2);Wait(100);arm2;                                          //ピンポン玉排出
										     //part8終了
 
 		ClearSensor(SENSOR_2);                                   //part10開始
 		go_back;until(SENSOR_2<=-rs8);Off(OUT_A+OUT_C);          //センサー2が-rs8以下になるまで前進
 		ClearSensor(SENSOR_2);
 		turn_left;until(SENSOR_2<=rl);Off(OUT_A+OUT_C);          //センサー2がrl以下になるまで左旋回
 		go_back;Wait(50);Off(OUT_A+OUT_C);                       //少し後進
 		start follow_line_back;until(SENSOR_2>=rs10);Off(OUT_A+OUT_C);
 										      //センサー2がrs10以上になるまで後進
 		n=n+1;								     //part10終了
 		}
 
	if(n>5)							     //5回目終了後以下のプログラムを行う
 		{							     //part11開始
		start follow_line_forward;until(SENSOR_2>=-rs1_2);
 		stop follow_line_back;Off(OUT_A+OUT_C);		     //センサー2が-rs1_2以上になるまで前進
 		go_forward;Wait(50);Off(OUT_A+OUT_C);		     //少し前進
 		start follow_line_forward;until(SENSOR_2<=rs1_1);
 		stop follow_line_back;Off(OUT_A+OUT_C);		     //センサー2が-rs1_1以上になるまで前進
 		}                                                         //part11終わり								   
 }
        
 task follow_line_forward()				    //ラインに沿って前進するプログラム
 {
 	while(true)
 		{
		if(SENSOR_1>THRESHOLD)			    //左側のセンサーが白で
			{
			if(SENSOR_3>THRESHOLD)		    //かつ右側のセンサーが白なら
  				{Off(OUT_A+OUT_C);go_forward;}//直進する
 			else if(SENSOR_3<THRESHOLD)	    //かつ右側のセンサーが黒なら
 				{Off(OUT_A+OUT_C);turn_right;}//右折する
 			}
 		else if(SENSOR_1<THRESHOLD)		    //左側のセンサーが黒で
 			{
 			if(SENSOR_3>THRESHOLD)		    //かつ右側のセンサーが白なら 
 				{Off(OUT_A+OUT_C);turn_left;} //左折する
 			else if(SENSOR_3<THRESHOLD)	    //かつ右側のセンサーが黒なら
 				{Off(OUT_A+OUT_C);go_forward;}//直進する。
 			}                    
 		}
 }
 
 task follow_line_back()					    //ラインに沿って後進するプログラム
 {
 	while(true)
 		{
		if(SENSOR_1>THRESHOLD)                     //左側のセンサーが白で
			{ 
 			if(SENSOR_3>THRESHOLD)		    //かつ右側のセンサーが白なら
				{Off(OUT_A+OUT_C);go_back;}   //後進
 			else if(SENSOR_3<THRESHOLD)	    //かつ右側のセンサーが黒なら
 				{Off(OUT_A+OUT_C);turn_left;} //左旋回
 			}
 		else if(SENSOR_1<THRESHOLD)		    //左側のセンサーが黒で
 			{
 			if(SENSOR_3>THRESHOLD)		    //かつ右側のセンサーが白なら 
 				{Off(OUT_A+OUT_C);turn_right;}//右旋回
 			else if(SENSOR_3<THRESHOLD)	    //かつ右側のセンサーが黒なら
 				{Off(OUT_A+OUT_C);go_back;}   //後進
 			}
 		}                    
 }

*感想 [#jad47c94]

*コメント [#me0d2489]


#comment


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