[[2009b/A2/ロボコン]] #define eye_L SENSOR_1 #define eye_R SENSOR_3 #define cont 45 #define time 2 #define new_count ClearSensor(SENSOR_2) sub follow_line() { if ((eye_L >= cont ) && (eye_R >= cont )){ OnRev(OUT_A+OUT_C); Wait(time); Off(OUT_A+OUT_C); } else if ((eye_L >= cont ) && (eye_R <= cont )){ OnRev(OUT_A); Wait(time); Off(OUT_A); } else if ((eye_L <= cont ) && (eye_R >= cont )){ OnRev(OUT_C); Wait(time); Off(OUT_C); } else { OnRev(OUT_A+OUT_C); Wait(time); Off(OUT_A+OUT_C); } } task main () { SetSensor(eye_L, SENSOR_LIGHT); SetSensor(eye_R, SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_ROTATION); Wait(20); new_count; while ( abs(SENSOR_2) <= 35 ) { follow_line(); } Off(OUT_A+OUT_C); Wait(50); new_count; while ( abs(SENSOR_2) <= 3 ) {OnRev(OUT_A); OnFwd(OUT_C);} OnRev(OUT_A); OnFwd(OUT_C); Wait(5); OnRev(OUT_A+OUT_C); Wait(45); Off(OUT_A+OUT_C); Wait(100); OnRev(OUT_B); Wait(200); Off(OUT_B); Wait(100); OnFwd(OUT_A); OnRev(OUT_C); Wait(15); OnRev(OUT_A); OnFwd(OUT_C); Wait(15); Off(OUT_A+OUT_C); OnFwd(OUT_A+OUT_C); Wait(60); Off(OUT_A+OUT_C); Wait(100); new_count; while ( abs(SENSOR_2) <= 3 ) { OnFwd(OUT_A); OnRev(OUT_C); } Off(OUT_A+OUT_C); Wait(100); OnFwd(OUT_A); OnRev(OUT_C); Wait(10); OnRev(OUT_A); OnFwd(OUT_C); Wait(10); Off(OUT_A+OUT_C); OnRev(OUT_A+OUT_C); Wait(5); Off(OUT_A+OUT_C); Wait(100); OnFwd(OUT_A); OnRev(OUT_C); Wait(5); Off(OUT_A+OUT_C); new_count; while ( abs(SENSOR_2) <= 27) { follow_line(); } PlaySound(1); Off(OUT_A+OUT_C); Wait(100); new_count; while ( abs(SENSOR_2) <= 10) { OnFwd(OUT_A+OUT_C); } Off(OUT_A+OUT_C); Wait(100); OnRev(OUT_A); OnFwd(OUT_C); Wait(30); Off(OUT_A+OUT_C); Off(OUT_A+OUT_C); Wait(20); OnRev(OUT_A+OUT_C); Wait(30); Off(OUT_A+OUT_C); Wait(50); new_count; while ( abs(SENSOR_2) <= 45 ) { follow_line(); } Wait(50); OnFwd(OUT_A+OUT_C); Wait(20); Off(OUT_A+OUT_C); repeat(3) { OnRev(OUT_A); OnFwd(OUT_C); Wait(5); Off(OUT_A+OUT_C); Wait(50); OnRev(OUT_A+OUT_C); Wait(10); Off(OUT_A+OUT_C); Wait(50); OnRev(OUT_A); OnFwd(OUT_C); Wait(10); Off(OUT_A+OUT_C); Wait(50); } PlaySound(1); Off(OUT_A+OUT_C); new_count; while ( abs(SENSOR_2) <= 51 ) { follow_line(); } OnFwd(OUT_B); Wait(190); Off(OUT_B); Wait(100); OnFwd(OUT_A+OUT_C); Wait(40); Off(OUT_A+OUT_C); PlaySound(1); Off(OUT_A+OUT_C); new_count; while ( abs(SENSOR_2) <= 3 ) { OnRev(OUT_A); OnFwd(OUT_C); } Off(OUT_A+OUT_C); OnRev(OUT_A); OnFwd(OUT_C); Wait(7); Off(OUT_A+OUT_C); Wait(20); new_count; while ( abs(SENSOR_2) <= 45 ) { follow_line(); } OnRev(OUT_C); Wait(80); OnRev(OUT_A+OUT_C); Wait(100); Off(OUT_A+OUT_C); }