#contents *課題 [#abf19995] 半径1m以内にある懐中電灯を探して、懐中電灯にピンポン玉を当てるロボットを製作しなさい。 ただし、ピンポン玉を放つ距離は10〜30cmとする。 ロボット本体が懐中電灯に接触しない限りどこからピンポン玉を放ってもよい。 *ロボットの説明 [#obe738e7] **車体 [#y5117d9a] #ref(./30464.jpg,50%) -車体はライントレースで使った形をもとに光センサーの位置を変え、ハンドの形をタイヤを使った形に変えました。 **ハンド [#kbb2d097] &ref(./30462.jpg,30%); &ref(./30463.jpg,30%); -写真のようにモーターでタイヤを動かしセットしていたピンポン玉を発射させます。 *プログラムの説明 [#jde65d72] **定義文 [#y1a01fd1] #define RUN_TIME 480 //一周する時間 **作成したプログラム [#e1212b21] task main() { int i,max; //i,maxを定義 SetSensor(SENSOR_2, SENSOR_LIGHT); //センサー2を光センサーに設定 SetPower(OUT_AC,7); //モーターの出力を7に設定 max=0; //光度の値の変数:一番明るいいところを記憶 ClearTimer(1); //Timer1をリセット while(FastTimer(1) < RUN_TIME){ //FastTimer(1)がRUN_TIME以下の時に繰り返す OnFwd(OUT_C); OnRev(OUT_A); //左に回転 if(SENSOR_2 >= max){ //より明るい所を発見した場合 ClearTimer(0); //Timer(0)をリセット max=SENSOR_2; } //一周する間に一番明るい所がmaxに記憶され、Timer(0)はその地点からスタートする } OnRev(OUT_C); OnFwd(OUT_A); //逆回転 Wait(FastTimer(0)); //一番明るいところまで回転 Off(OUT_C); //一番明るいところで停止 OnFwd(OUT_AC); //前進 Wait(50); OnRev(OUT_B); //ボールを発射 Wait(50); Off(OUT_ABC); } *問題点 [#j043327e] -ボールを発射するとまっすぐに飛んでいかない。 -片方の車輪だけをうごかすと360°回転するが逆回転をはじめるとはじめにいた中心から大分ずれてしまう -ロボットが回転している間にボールが違うところに転がっていってしまう *解決法 [#nf11218e] -ボールを発射する前に懐中電灯のすぐ前まで前進させてから、ボールを発射させるようにした。 -2つの車輪を動かすようにした。また、モーターの出力を7にすることでよりスピーディーで正確に光の位置を捉え懐中電灯のある方向にロボットを向かせることができた。 -何度もボールを発射させるためのタイヤと床との距離を実験をしあわせた。 *まとめ・感想 [#w92f4f44] 今回の課題は、比較的に早く完成させることができ良かった。 またひとつ技術や知識を得ることができ良かった。次のロボコンの制作に力を入れたい。