[[2009a]] #contents *課題 [#w47f5f89] +懐中電灯を狙ってブロックを投げるロボット +懐中電灯に向かって進み、懐中電灯の動きを止めればブロックを投げるロボット +懐中電灯に向かって進み、見失った時には再び探し7秒以上追尾できたら懐中電灯に向かってブロックを投げるロボット *ロボットの説明 [#edb1a6f7] #ref(2009a/A8/課題3左/090717_1716~01.jpg) -動きやすくするために3輪にした。 #ref(2009a/A8/課題3左/200907171634000.jpg) -車体の一番後ろからホイールを投げる。 #ref(2009a/A8/課題3左/200907171640000.jpg) -逆回転防止のロック *プログラム [#df92b6db] -懐中電灯を狙ってブロックを投げるロボット --ニシヤマのプログラム #define TURN_TIME 250 //ロボットが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); } -光を追いかけて、近づいたときブロックを投げる --小林のプログラム #define Light 60 //Lは光を探すため #define M 80 //Mは光との距離を測るため task main(){ SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_LIGHT); while((SENSOR_1<M)&&(SENSOR_2<M)){ //光に近づくまで繰り返す if(SENSOR_1>Light){ //どちらも明るい場合は直進 if(SENSOR_2>Light){ OnFwd(OUT_A); Wait(50); OnRev(OUT_A); Wait(50); }else{ //左が明るい場合は左に行く OnFwd(OUT_A); Wait(100); }else{ if(SENSOR_2>Light){ //右が明るい場合は右に OnRev(OUT_A); }else{ //どちらも暗いときは反転 OnFwd(OUT_A); Wait(100); } } } OnFwd(OUT_B); //光に近づいたらブロックを投げる Wait(50); Off(OUT_B); } *感想 [#p110ae1f] -課題3を終えて --今回の課題3の2つ目では懐中電灯を探して30センチの所まで近づいて投げるというものだったのですが携帯のライトを使うといくら感度を上げてもなかなか反応しなくて苦労しました。 --今回は3回目の課題で今までで一番期間が短かったのですが、グループでしっかり打ち合わせをしてスムーズに進行できたと思います。 -ロボコンに向けて --いよいよ次はロボコンの作業に入りますがテスト期間に入りあまりたくさん時間はとれないと思うので班内で連携とりながら行いたいです。 *コメント [#uf6a83ee] コメントよろしくお願いします - 2つ目の課題では、懐中電灯は左右にも動きます。過去のページなどを参考にして見てください -- [[FI]] &new{2009-08-05 (水) 13:12:54}; - ロボットが停止したことを明確に認識できた方がいいです。また、左に光があるときと光を見失ったときが同じ命令なのでまとめられます -- [[FI]] &new{2009-08-07 (金) 00:00:12}; #comment