目次

#contents
*課題2 黒い線に沿って動くロボット [#y3596a15]

各チームで作成したコースを3周するロボットを製作せよ。交差点のうちの一つには500mlの空の紙パックをおき、次のような動作するプログラムを作成せよ。(他のメンバーと重ならないように一人一つのプログラムを作成する)

   1. 紙パックを迂回する、あるいは紙パックをもとの位置に戻したのちコースに戻って進む (交差点を通過後、紙パックが元の位置にあればよい)
   2. 紙パックを次の交差点まで運んで行き、その交差点に紙パックを残してさらに黒い線に沿って進む

**完成したロボット [#e015b271]

今回は各プログラムにつきパーツをかえてロボットをつくりました。

***ノーマル [#z8140992]
#ref(2009a/A3/課題2左/ノーマル.jpg,50%)

***恵のロボット(改善前) [#uff10e12]
#ref(2009a/A3/課題2左/恵のロボット.jpg,50%)

***堀内のロボット [#bc0948b0]
#ref(2009a/A3/課題2左/堀内のロボット.jpg,50%)

***改善前の光センサー [#uf094e72]
#ref(2009a/A3/課題2左/光センサー.jpg,50%)


***ロボット作成において工夫した点 [#adda88b4]

ロボットの本体は、小回りが利くようになるべく小さく、かつ頑丈に創りました。
バンパーは、テコの原理を用いて、なるべく低くしました。

**プログラムの説明 [#kd62ac00]

***恵のプログラム [#he1cbf21]

 #define GO OnFwd(OUT_A+OUT_C);                   //前に進む
 #define LEFT OnRev(OUT_A); OnFwd(OUT_C);                                      //左に回る
 #define RIGHT OnRev(OUT_C); OnFwd(OUT_A);                                                //右に回る
 #define RUN_TIME 8000                                                     //走る時間の設定
 
 task main ()
 { 
 	
 	SetSensor ( SENSOR_1, SENSOR_LIGHT );
 	SetSensor ( SENSOR_2, SENSOR_TOUCH );
 	SetSensor ( SENSOR_3, SENSOR_LIGHT );                                                     //センサーの設定
 	
 	ClearTimer(0);                                                       //タイマーを初期化
 	int flag;                                                     //交差点の名前
 	flag = 0;                                                      //交差点の値を0にしておく
 	
 	while( FastTimer(0) <= RUN_TIME )                                       //タイマーの時間を満たすまで
 	{			
 			while ( SENSOR_2 == 1 )                                          //センサー2が反応する間
 				{
 					OnFwd(OUT_B);                                          //牛乳パックを捕まえる
 					Wait(50);
 					Off(OUT_B);
 					
 					if (flag==4 || flag==10 )                                      //もし4番目と10番目の交差点を通れば
 						{
 							GO;
 							Wait(80);
 							LEFT;
 							Wait(170);               //若干前に進み、左に180度回り、
 						
 							OnRev(OUT_B);      
 							Wait(50);
 							Off(OUT_B);               //捕まえた牛乳パックを放す
 								
 							RIGHT;        
 							Wait(170);               //右に180度回る
 						}
 					if ( SENSOR_1 > 40 && SENSOR_3 > 40 )          //センサー1とセンサー3が白のとき、前に進む
 						{
 							GO                   
 						}			
 					if ( SENSOR_1 < 40 && SENSOR_3 > 40 )                  //せんさー1が黒、センサー3が白のとき、左に回る
 						{	
 							LEFT	
 						}
 					if ( SENSOR_1 > 40 && SENSOR_3 < 40 )     //センサー1が白、センサー3が黒のとき、右に回る
 						{
 							RIGHT
 						}
 					if ( SENSOR_1 < 40 && SENSOR_3 < 40 )     //センサー1とセンサー3が黒のとき、flagに1を足して、前に進む
 						{
 							flag==flag+1;
 							GO
 						}
 				}
 			if ( SENSOR_1 > 40 && SENSOR_3 > 40 )
 				{
 					GO
 				}			
 			if ( SENSOR_1 < 40 && SENSOR_3 > 40 )
 				{	
 					LEFT	
 				}
 			if ( SENSOR_1 > 40 && SENSOR_3 < 40 )
 				{
 					RIGHT
 				}
 			if ( SENSOR_1 < 40 && SENSOR_3 < 40 )
 				{
 					flag==flag+1;
 					GO
 				}
 	
 	}
 	Off(OUT_A+OUT_C);                        //終了
 }
***堀内のプログラム [#q40d9bdf]

***感想、反省点 [#p210bb9a]
んー、なんか、ロボットの制作するのが意外と時間を食ったし、プログラムも若干、苦労しました;;
でも自分的には、けっこうできた方だと思います。by恵
**コメントお願いします [#f06c3a94]

#comment

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