今回の課題はロボットを一回転させ、懐中電灯のある方にボールをシュートする。明るさのピークを正確に見つけることが重要である。
本体は課題2を参照(課題2の時より少し軽量化している)。アームは新しく作った。ボールを上から軽く押さえつけ、左右に移動しても両端のブロックがアームからボールが離れないようにしている。後ろに下がってもアームの押さえつける角度からボールが離れることはない。
・定義
#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); }
・懐中電灯に向かってシュートできた。
・停止を入れることで安定して動かせた。
・車の動きが少し早かったのでシュートする位置が少しずれてしまった。