[[2019a/Member]] #CONTENTS *課題について [#d390098d] A地点を出発し、経路を黒い線にそって動くロボットを作成する 。 A地点から出発 → M → K(直進) → L(ピンポン玉をつかむ) → K(右折) → J(一時停止の後、左折) → I(直進) → H(直進) → G(左折) → F → E → D(一時停止の後、直進) → C(直進) → B(一時停止) → シュート→ A地点に入る(ゴール) 交差点では1秒間停止し、丁字路では直角方向に進入する時のみ一時停止すること。 詳しいコースは[[2019a/Mission2]] *ロボット本体の説明 [#h9da34e7] 今回のロボットは、コースの細かいカーブを曲がりやすくするため、小型化することに努め、縦横の大きさを小さくして、タイやを2つにしました。 下の写真は、ロボット全体の写真になります。 ピンポン球を運ぶアームは、掴むと振動で落としたり、より精密な操作が必要になると判断したため、下の写真のようにピンポン球を囲んで運ぶようにしました。 最後のシュートは、アームをあげ、バックしてから、もう一度アームを下げ押し込むようにします。 下の写真は、ロボットを下から見た写真です。見てわかるように前側にライントレース用の光センサーがあり、左右の車輪用のモーターをくっつけてロボットの土台にしています。 *プログラムについて [#t29f7086] #define migi OnFwd(OUT_A);Off(OUT_B); #define hidari OnFwd(OUT_B);Off(OUT_A); #define hidariback OnRev(OUT_A);Off(OUT_B); #define migiback OnRev(OUT_B);Off(OUT_A); #define amuage OnFwd(OUT_C);Wait(10); #define amusage OnRev(OUT_C);Wait(10); int t; sub Line() { SetSensor(SENSOR_1,SENSOR_LIGHT); ClearTimer(0); while(FastTimer(0)<t){ if(SENSOR_1<40){migi;} else if(SENSOR_2<43){OnFwd(OUT_AB);} else if(SENSOR_2<48){hidari;} } Off(OUT_AC); } sub Line_kousatenn() { SetSensor(SENSOR_1,SENSOR_LIGHT); ClearTimer(0); while(FastTimer(0)<=t){ if(SENSOR_1<40){migi;} else if(SENSOR_2<43){OnFwd(OUT_AB);ClearTimer(0);} else if(SENSOR_2<48){hidari;ClearTimer(0);} } Off(OUT_AC); } sub Line_back() { SetSensor(SENSOR_1,SENSOR_LIGHT); ClearTimer(0); while(FastTimer(0)<=t){ if(SENSOR_1<40){migiback;} else if(SENSOR_2<43){OnRev(OUT_AB);ClearTimer(0);} else if(SENSOR_2<48){hidariback;ClearTimer(0);} } Off(OUT_AC); } sub syuusei() { migi;Wait(28);Off(OUT_AB); } task main() { t=510; Line(); amusage; t=100; Line_back(); OnFwd(OUT_B);Wait(28); t=28; Line_kousatenn(); t=0; Line_kousatenn(); syuusei(); t=0; Line_kousatenn(); syuusei(); t=0; Line_kousatenn(); t=0; Line_kousatenn(); t=0; Line_kousatenn(); t=0; Line_kousatenn(); syuusei(); t=0; Line_kousatenn(); syuusei(); t=0; Line_kousatenn(); syuusei(); amuage; OnRev(OUT_AB);Wait(20); amusage; OnFwd(OUT_AB);Wait(30); }