[[2016b/Member]] *目次 [#r714926f] #contents *課題 [#sec56fbe] *機体の説明 [#r602f42d] **機体全体 [#l6cbf83b] #ref(2016b/Member/gazet/Mission2/robothi.jpg,11.9kb,) 今回の課題に挑む機体。もろい部分はあるが、しっかり点検してから走らせれば問題なし。 **車部分 [#r9e50c11] 機体 車体はできるだけ小さく作った。小回りが利くようにするためだ。三輪のうち1つはキャスターにしてある。摩擦の少ないパーツを引きずるよりもバックがスムーズになった。 #ref(2016b/Member/gazet/Mission2/ue.jpg,7.34kb,) #ref(2016b/Member/gazet/Mission2/ura.jpg,12.9kb,) **アーム部分 [#if9a124f] 黄色い部品で挟みむ。光センサーもアーム部分につけた。モーターもつけたため、重く、しっかり取り付けないと走行中にとれてしまうのが欠点。 #ref(2016b/Member/gazet/Mission2/kuwagata.jpg,7.91kb,) *プログラムの説明 [#x51f6632] #define go_go OnFwd(OUT_AC); //前に進む #define turn_right OnFwd(OUT_C);Off(OUT_A); //右に曲がる #define turn_left OnFwd(OUT_A);Off(OUT_C); //左に曲がる #define kyu_turn_r OnFwd(OUT_C);OnRev(OUT_A); //右旋回 #define kyu_turn_l OnFwd(OUT_A);OnRev(OUT_C); //左旋回 #define right_cross turn_right;Wait(110);//交差点右折 #define straight_cross kyu_turn_r;Wait(10);go_go;Wait(30); //交差点直進 #define BLACK_a 44 //これらは色を判断するために使う光センサーの値 #define BLACK_b 48 #define WHITE_a 52 #define WHITE_b 58 #define MOVE_TIME 18 #define ball_get go_go;Wait(20);Off(OUT_AC);OnFwd(OUT_B);Wait(20);Off(OUT_B); //ボールをとる #define shoot OnRev(OUT_AC); Wait(110);Off(OUT_AC);kyu_turn_l;Wait(80);Off(OUT_AC);Wait(40);kyu_turn_r;Wait(30);OnRev(OUT_B);Wait(20);Off(OUT_ABC); //ボールをゴールへ入れる 回りながら投げる動きに挑戦した。 ライントレースするサブルーチン 黒い線の左側をトレースする 光センサーの値によって5段階の動きをプログラミングした。 sub line_trace() { ClearTimer(0); SetSensor(SENSOR_2,SENSOR_LIGHT); while(FastTimer(0)<=MOVE_TIME){ if(SENSOR_2<BLACK_a){ kyu_turn_l; } else if(SENSOR_2<BLACK_b){ turn_left; ClearTimer(0); } else if(SENSOR_2<WHITE_a){ go_go; ClearTimer(0); } else if(SENSOR_2<WHITE_b){ turn_right; ClearTimer(0); } else { kyu_turn_r; ClearTimer(0); } } Off(OUT_AC); Wait(100); } ミッションを遂行するプログラム task main() { line_trace(); right_cross; line_trace(); straight_cross; ball_get; line_trace(); straight_cross; line_trace(); right_cross; line_trace(); straight_cross; line_trace(); right_cross; line_trace(); shoot; }