*ロボット本体の説明 [#p0e3be5d] 出力端子ACでタイヤの操作、Bでアームの操作をする。また入力端子3には光センサーが取り付けてある。 **タイヤの説明 [#kc68ae9e] 今回のタイヤは本体の前側に写真のようなタイヤを左右一つずつ取り付け、後ろ側にはキャスターが付いており、回転する動きにも対応できるようにした。 #ref(./あ.jpg,50%) **アームの説明 [#fa2a5602] 今回は写真のようにアームを床に下ろすとボールが勝手に前に転がっていくようにした。 #ref(./う.jpg,50%) #ref(./い.jpg,50%) #ref(./う.jpg,50%) モーターの後ろ側に歯車が付いているのは、ボールの重さでアームが落ちないようにするためである。 *プログラムの説明 [#t5b11724] 今回作成したプログラムは次のようである。 #define seisenkai OnFwd(OUT_A);OnRev(OUT_C); //時計回りに回る。 #define hansenkai(t) OnFwd(OUT_C);OnRev(OUT_A);Wait(t);Off(OUT_AC); //反時計回りに回る。 #define MOVETIME 340 //一回転するのにかかる時間。 #define orosu OnFwd(OUT_B);Wait(14);Off(OUT_B); //ボールを投げる。 task main() { SetPower(OUT_ABC,1); //ゆっくり回転させる。 SetSensor(SENSOR_3,SENSOR_LIGHT); int MAX=10; //仮の最大値を設定。 ClearTimer(0); ClearTimer(1); while(FastTimer(0)<=MOVETIME) { if(SENSOR_3>MAX){MAX=SENSOR_3;ClearTimer(1);} //最大値より強い光の時MAXの値を更新しタイマー1をリセット。 else{seisenkai;} } Off(OUT_AC);Wait(100); hansenkai(FastTimer(1)-100); orosu; } **詳しい説明 [#x9fb86db] 事前にこのロボットが一回転する時間は計ってあり、3.40秒であった。 このプログラムでは、光の強さが最大になる度、タイマーをリセットし一回転終えるまでのその最大になった時から、ロボットが一回転し終えるまでの時間を計測するようにした。 24行目のWait(100)は回転し終え逆回転する際に、勢いでボールがアームから落ちないようにするためのものである。 またそのあと逆回転する際の(FastTimer(1)-100)と書かれているのは上で書いたように、ボールが落ちないように1秒止まっている間もタイマーが作動しているからである。 *反省 [#k6be9910] 課題3ではロボットの組み立てに参加でき、プログラムの作成は試行錯誤しながら出来たのでよかったと思う。ロボコンでも班員の足を引っ張ることがないようにしたい。