#contents *課題 [#yecf5b44] 半径1m以内にある懐中電灯を探して、懐中電灯にピンポン玉を当てるロボットを製作しなさい。 ただし、ピンポン玉を放つ距離は10〜30cmとする。 ロボット本体が懐中電灯に接触しない限りどこからピンポン玉を放ってもよい。 *ロボット [#hec306db] #ref(./rob.jpg) 光をより感知できるようにセンサーを機体から伸ばして設置した。 ボールの吸収と発射は専用のタイヤを取り付け回転させ、その回転を利用した。 **ボールの発射 動画 [#b313ef24] #ref(./IMG_8741.MOV) *プログラム [#lbc218f0] #define turntime 360 // 一回転する時間 task main() { SetSensor(SENSOR_2, SENSOR_LIGHT); int lmax=0; int tmax=0; ClearTimer(0); OnFwd (OUT_B); // ボールの吸収・ホールド while (FastTimer(0)<=turntime) { while (FastTimer(0)<=turntime){ OnFwd(OUT_AC); if(lmax<=SENSOR_2){ ClearTimer(1); lmax=SENSOR_2; PlaySound(SOUND_CLICK); } } // 一回転する間に光源を探す tmax=FastTimer(1); ClearTimer(0); while (FastTimer(0)<=tmax){ OnRev(OUT_AC); } // 見つけた光源へ逆回転で向き直す Off(OUT_AC); // 機体動きを止める OnRev(OUT_B); // ボール発射 Wait(200); Off(OUT_B); } 時間を指定して一回転させようとしても誤差が生じる。そのため、一回転した後に逆回転で光源を見つけた方向に向かせることで誤差が発生しにくくした。 *反省・感想 [#wbcffbb8] 前回のロボットを少し改造するだけだったのですぐに終わった。 割と光源から離れていてもうまく作動した。 もう少し勢いよくボールを発射できたらかっこよかったかもしれないと思った。