[[2015a/Member]]
*課題について [#c48469ea]
 今回の課題はロボットを一回転させ、懐中電灯のある方にボールをシュートする。明るさのピークを正確に見つけることが重要である。
* ロボットについて [#o136ba17]
&ref(./_10501.jpg,20%);
&ref(./_10502.jpg,20%);
&ref(./_10503.jpg,20%);
&ref(./_10504.jpg,20%);
&ref(./_10505.jpg,20%);
&ref(./_10506.jpg,20%);

** ロボットの基本構造 [#y1f4e172]

 本体は課題2を参照(課題2の時より少し軽量化している)。アームは新しく作った。ボールを上から軽く押さえつけ、左右に移動しても両端のブロックがアームからボールが離れないようにしている。後ろに下がってもアームの押さえつける角度からボールが離れることはない。
* プログラムについて[#ra2fdf9b]
 ・定義
 #define Time 380  //一回転する時間
 #define spin_R OnFwd(OUT_A); OnRev(OUT_C);   //右回転
 #define spin_L OnRev(OUT_A); OnFwd(OUT_C);   //左回転
 #define shoot OnRev(OUT_B); Wait(20); Off(OUT_B);  //シュート

 ・メインプログラム
 変数をおき、最も明るい点を探す。
 ・メインプログラム:
 変数をおき、回転しながら最も明るい点を探す。
 task main() {
   SetSensor(SENSOR_2,SENSOR_LIGHT);
   int most_light = 0;     //最も明るい時のしきい値を記録するための変数
   ClearTimer(0);
  while(FastTimer(0) <= Time){   //一回転して最も明るい点を見つける。
      spin_R;                      //右回りで一回転
      if(SENSOR_2 > most_light){     //最も明るければそのしきい値を記録する
         most_light = SENSOR_2;
       }
      }
   Off(OUT_AC);    //小休止
   Wait(200);

 ・最も明るい点にシュートする
 先程と違い、逆回転する。そして、最も明るい点にシュートする
  ClearTimer(1);
  while(FastTimer(1) <= Time){       //逆回転して最も明るい点で止まり、シュートする
    spin_L;                            //左回りで一回転
    if(SENSOR_2 > most_light - 1){       //最も明るいなら停止してシュート
          Off(OUT_AC);
          Wait(100);
          shoot;
          Off(OUT_AC);
          Wait(400);
      }
   }
  Off(OUT_AC);
 }


*反省 [#l2f45834]
**よかった点 [#q96eb6f2]
 ・懐中電灯に向かってシュートできた。

 ・停止を入れることで安定して動かせた。
**悪かった点 [#kefdfa61]
 ・車の動きが少し早かったのでシュートする位置が少しずれてしまった。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS