*課題3 [#ub8c3693] 半径1m以内にある懐中電灯を探して、懐中電灯にピンポン玉を当てるロボットを製作しなさい。ロボット本体が懐中電灯に接触しない限りどこからピンポン玉を放ってもよい。 *プログラムの説明 [#p3c2ba78] **定義 [#b4732f53] #define turn_right OnFwd(OUT_A);OnRev(OUT_C);//右に曲がる #define turn_left OnFwd(OUT_C);OnRev(OUT_A);//左に曲がる #define sycle_time 360//本体が1回転する時間 #define stnaby_shoot OnFwd(OUT_B);Wait(200);Off(OUT_B);//アームを解放 #define shoot_action OnFwd(OUT_AC);Wait(50);Off(OUT_AC);//前進によるシュート **探索 [#q3804518] task main() { SetSensor(SENSOR_2,SENSOR_LIGHT); int rightmax=0; int timemax=0; ClearTimer(0); turn_left;//左に曲がる while(FastTimer(0)<sycle_time){ if(SENSOR_2>rightmax){ rightmax=SENSOR_2; timemax=FastTimer(0); } } 一周に必要な時間中に最大光量を探し出し、その時点の時間を記録する。 **シュート [#z617fdc1] Off(OUT_AC); turn_right;右に曲がる Wait(sycle_time-timemax);//逆回転時間計算 Off(OUT_AC); stnaby_shoot;//アームを解放 shoot_action;//前進(ボールをシュート) Wait(300); Off(OUT_B); } 最大光量時の時間から一周の時間を引くことで懐中電灯の正面まで逆回転する。あとはアームを広げて前進することでシュートとなる。 *反省 [#u499dfd7] ロボットがロボコンに向け改造されていたので多くの試行回数はなかった。そのため命中したのは少なく、まだまだ改良の余地があるプログラムであった。