[[2007b/MemberOnly/進行状況A]] ----- CENTER:COLOR(navy):&size(22){課題3:懐中電灯に向かってブロックを投げるロボット}; ----- RIGHT:今日のアクセス数 &counter(today); RIGHT:総アクセス数 &counter(all); LEFT:目次 #contents *課題 [#q0d8c8be] インストの「top secret」を参考にして、ブロック(一番太いホイール)を投げるロボットを作成し、以下の動きをするようにプログラムを作成せよ。 (重複しないように一人一つ以上のプログラムを作成すること) 1. 全方向から懐中電灯の方向を探しだし、懐中電灯に向けてブロックを投げる。懐中電灯は動かさない。 2. 懐中電灯をゆっくり動かしたとき懐中電灯に向かって進む。 3. 懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めればブロックを投げる。 ただし、モータ、光センサ、タッチセンサはそれぞれ2個まで使用可。懐中電灯の代わりに携帯のライトなどを利用してもよい。 (期限:1月9日午後6時) *ロボット [#j7174426] LEFT:&ref(./P1000002.JPG,85%,画像の説明); LEFT:&ref(./P1000005.JPG,85%,画像の説明); LEFT:&ref(./P1000006.JPG,85%,画像の説明); LEFT:&ref(./P1000007.JPG,85%,画像の説明); LEFT:&ref(./P1000008.JPG,85%,画像の説明); LEFT:&ref(./P1000003.JPG,85%,画像の説明); &ref(./P1000004.JPG,85%,画像の説明); LEFT:&ref(./P1000009.JPG,85%,画像の説明); &ref(./P1000011.JPG,85%,画像の説明); &ref(./P1000012.JPG,85%,画像の説明); *ソースコード [#v33696dc] **条件:懐中電灯をゆっくり動かしたとき懐中電灯に向かって進む。 [#s85ed835] task main(){ SetSensor(SENSOR_1, SENSOR_LIGHT);//右側光センサー SetSensor(SENSOR_3, SENSOR_LIGHT);//左側光センサー while(1){ if(SENSOR_1<=35&&SENSOR_3<=35){//懐中電灯の光が当てられてないとき Off(OUT_A);//止まっている } else if(-15<=SENSOR_1-SENSOR_3&&SENSOR_1-SENSOR_3<=15){//懐中電灯の光が正面のとき OnFwd(OUT_A);//直進 Wait(40); OnRev(OUT_A); Wait(40); Off(OUT_A); } else if(SENSOR_1-SENSOR_3>15){//右のほうが明るい時 OnFwd(OUT_A);//右に進む Wait(40); Off(OUT_A); } else{//左のほうが明るい時 OnRev(OUT_A);//左に進む Wait(40); Off(OUT_A); } } } *考察 [#ub276c09] **苦労した点 [#f2dc2712] **工夫した点 [#ic16df4a] ホイールの投げ方はバットで打ち出す形にした。これに依って前方にそして比較的長距離飛ばせるようになった。 *感想 [#xdcd050c] *コメント [#h0ee0f99] よろしければコメントお願いします。 #comment