[[2010a]]
*目次 [#r61547b2]
#contents
*課題3の内容 [#v95515a7]
黄色いホイールを2個以上連射するロボットを作成し、以下の動きをするようにプログラムを作成する。ただし1は懐中電灯を2個使用し、ロボットの動作中は懐中電灯を動かさないがいろいろな距離や方向にある懐中電灯に対応できるロボットにする。2は懐中電灯を1個使用し懐中電灯をゆっくり動かす。

1、全方向から2つの懐中電灯の方向を探しだし、懐中電灯を狙ってホイールを投げる。可能な限り正確な方向に投げる。

2、懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めれば一定の距離(懐中電灯から30cm以上離れた距離)まで近づいて懐中電灯を狙ってブロックを投げる。
*メンバー [#h24ebdbc]
-ヒデ
-タツ
*ロボット [#b662ce62]
#ref(./F1000183.jpg,around,right)
#ref(./F1000184.jpg,around,left)
LEFT:←前から
RIGHT:側面→
#clear
&br;
#ref(./F10001855.jpg,around,right)
#ref(./F10001866.jpg,around,left)
LEFT:←後ろから
RIGHT:側面→
#clear
**投擲機能の説明 [#j1ea737f]
#ref(./F1000187.jpg,around,left)
←ここが一番苦労した投擲部分です。振動によってくずれてしまい、四方から支える組み立て方をした。
#clear
**工夫した点 [#dfa5d585]
うまく飛ばすように発射する部分を斜めにして、固定したこと。
**苦労した点 [#q1023dd0]
ホイールが前に飛ばず上に飛び出してしまうので、本体の形をかえるように考えること。
*プログラム [#m0575cc2]
**ヒデのプログラム [#zf56536d]
 #define TURN_TIME 350       //1周するのにかかる時間
 task main()
 {
            int light_max=0; //光センサーの最大値
            int t_max=0;     //センサーが最大値の時刻
            SetSensor(SENSOR_1,SENSOR_LIGHT);//センサー1は光センサー
            ClearTimer(0);  //タイマー動作
            OnFwd(OUT_A);  //右回りに回転
            while ( Timer(0)<TURN_TIME){   //繰り返し
                     if(SENSOR_1>light_max){  //センサー1がより強い光を感知したら
                           light_max=SENSOR_1; //最大値を現在の値に
                           t_max=Timer(0);   //現在の値を最大値の時刻に   
                    } 
          }  
          Off(OUT_A); 
          Wait(50);
          OnFwd(OUT_A);    //右回りに回転
          Wait(t_max);
          Off(OUT_A);
          OnRev(OUT_C);    //ブロックを投げる
          Wait(20);
          Off(OUT_C);
 }
**タツのプログラム [#cce8e4b2]
 #define light 40			//閾値
 #define lightest 75		//懐中電灯距離30cmぐらい。
 
 
 
 task main()
 {
 	SetSensor(SENSOR_1,SENSOR_LIGHT);
 	SetSensor(SENSOR_3,SENSOR_LIGHT);
 
 while((SENSOR_1 < light) || (SENSOR_3 < light)) {
 	if ((SENSOR_1 > light) && (SENSOR_3 < light))		//懐中電灯が、マシンの左側にある時
 		{  
 		Off(OUT_A+OUT_C); Wait(50); 	
 		OnRev(OUT_A); OnFwd(OUT_C);
 		}
 	if ((SENSOR_1 < light) && (SENSOR_3 > light))		//懐中電灯が、マシンの右側にある時
 		{
 		Off(OUT_A+OUT_C); Wait(50);
 		OnFwd(OUT_C);
 		}
 	if ((SENSOR_1 < light) && (SENSOR_3 < light))		//懐中電灯が見当たらないとき
 		{ 
 		Off(OUT_A+OUT_C); Wait(50);
 		OnFwd(OUT_C); OnRev(OUT_A);
 		}
 	Off(OUT_A+OUT_C);
 	Wait(100);
 	}
 while((SENSOR_1 <= lightest) && (SENSOR_3 <= lightest)) {	//懐中電灯までの距離30cmまで近づく
 	OnFwd(OUT_A+OUT_C);
 	}
 Off(OUT_A+OUT_C);
 OnFwd(OUT_B);								//ブロックを投げる
 Wait(60);
 Off(OUT_B);
 }

***工夫した点 [#zf3d1a2d]
プログラムが複雑になってきたので、どこにどのプログラムをいれればどう動くのか何回も試すのが苦労した。
時間を調整するときに工夫をした。
***感想 [#lfcc46db]
課題3だけあって一層難しいと感じた、ぎりぎりまで考えたので時間がかかってしまったが、できてよかった。
*コメントお願いします。 [#i88f4391]

#comment


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