* 課題3 [#qd0f2801] 半径1m以内にある懐中電灯を探して、懐中電灯にピンポン玉を当てるロボットを製作する。~ ただしロボット本体が懐中電灯に接触しない限りどこからピンポン玉を放ってもよい。 * ロボット [#gb529d8d] ** 外観 [#pddc99d7] #ref(1437722621344.jpg) #ref(1437722682817.jpg) ** ロボットの説明 [#y189b7e6] 本体の動きは冊子に乗っているロボットのを使用している。~ ピンポン玉をつかんだり、放す動作をするために前の部分を改良した。~ Bでタイヤを手前に回転し続けて、ピンポン玉に衝突すると内側に入るようになっている。~ はなすときは、タイヤを逆回転させる。 * プログラム [#sce048e4] **メイン [#h983d3be] task main() { SetSensor(SENSOR_2, SENSOR_LIGHT); int lightmax=0; //明るさの最大値 int tmax=0; //時間 ClearTimer(0); //タイマー0をリセット int tmax=0; //一回転をした後、光源の位置に戻るために使用する ClearTimer(0); // OnFwd (OUT_B); //ボールをつかむ while (FastTimer(0)<=360) //最初に一回転するあいだ { OnFwd(OUT_A); OnRev(OUT_C); if(lightmax<=SENSOR_2)//明るさの最大値がセンサーより低いとき { ClearTimer(1);//タイマー1をリセットし時間を計る lightmax=SENSOR_2; //明るさの最大値を光センサーと同じにする } } tmax=FastTimer(1); //tmaxの値をタイマー1と同じにする ClearTimer(0); //タイマー0をリセットする ClearTimer(0); // while (FastTimer(0)<=tmax) //明るさが最大値の地点に戻る { OnRev(OUT_A); OnFwd(OUT_C); } Off(OUT_A); //これより、停止しピンポン玉をうつ Off(OUT_C); OnRev(OUT_B); Wait(200); Off(OUT_B); } **説明 [#s6ab8355] まず本体を一回転させる。その間に明るさの最大値があがるごとに、明るさの最大値を更新しそこからの時間を計る。~ 一回転が終わったら計った時間の分だけ逆回転し、ピンポン玉をはなす。 *反省、感想 [#l92e8cff] 前のロボットと構造はあまり変わらないので今までと比べると苦労はしなかった。~ プログラムは他のメンバーは音を鳴らしたりして工夫をしていたので、自分ももっと応用できるようになりたい。~ 今までの知識をいかしてロボコンを頑張りたい。