[[2016a/Member]] *プログラム [#k22b8b3f] #define BLACK 43 #define WHITE 54 #define SPEED1 19 #define go_forward OnFwd(OUT_BC,SPEED1); #define turn_left(t,w1,w2) OnFwd(OUT_B,w1); OnRev(OUT_C,w2); Wait(t);Off(OUT_BC); #define turn_left1 OnFwd(OUT_B,SPEED1);Off(OUT_C); #define turn_left2 OnFwd(OUT_B,SPEED1);OnRev(OUT_C,SPEED1); #define turn_right(t,w1,w2) OnFwd(OUT_C,w1); OnRev(OUT_A,w2); Wait(t);Off(OUT_BC); #define turn_right1 Off(OUT_B);OnFwd(OUT_C,SPEED1); define turn_right2 OnRev(OUT_B,SPEED1);OnFwd(OUT_C,SPEED1); #define STEP 1 #define short_break Off(OUT_BC);Wait(1000);PlaySound(SOUND_UP); #define cross_line go_forward;Wait(200);Off(OUT_BC);Wait(1000); #define nMAX 350 void line_trace() { SetSensorLight(S1); int nOnline=0; while (nOnline < nMAX ) { if (SENSOR_1 < BLACK-5) { turn_right2; nOnline++; } else { if (SENSOR_1 < BLACK) { turn_right1; } else if (SENSOR_1 < WHITE) { go_forward; } else if (SENSOR_1 < WHITE+5) { turn_left1; } else { turn_left2; } nOnline=0; } Wait(STEP); } short_break; nOnline=0; Off(OUT_BC); } void line_closs() { cross_line; SetSensorLight(S1); do{ if (SENSOR_1 < BLACK) { turn_right1; } else if (SENSOR_1 > WHITE) { turn_left2; } } while((SENSOR_1 > BLACK)&&(SENSOR_1 < WHITE)); Off(OUT_BC); } void line_right() { cross_line; turn_right(1000,40,40); SetSensorLight(S1); do{ if (SENSOR_1 < BLACK) { turn_right1; } else if (SENSOR_1 > WHITE) { turn_left2; } } while((SENSOR_1 > BLACK)&&(SENSOR_1 < WHITE)); Off(OUT_BC); } void line_left() { cross_line; turn_left(1000,40,40) SetSensorLight(S1); do{ if (SENSOR_1 < BLACK) { turn_right1; } else if (SENSOR_1 > WHITE) { turn_left2; } } while((SENSOR_1 > BLACK)&&(SENSOR_1 < WHITE)); Off(OUT_BC); } void last_move() { go_forward; Wait(1500); Off(OUT_BC); } task main() { line_trace(); line_right(); line_trace(); line_closs(); line_trace(); line_closs(); line_trace(); line_right(); line_trace(); line_right(); line_trace(); last_move(); }