#define OPEN 1 #define GO 2 #define PUT 3 #define BACK 4 #define THERESHOLD 47 #define HIGHESTPOWER 7 #define HIPOWER 1 #define LOWPOWER 0 #define set_power_HE SetPower(OUT_AC,HIGHESTPOWER); #define set_power_H SetPower(OUT_AC,HIPOWER); #define set_power_L SetPower(OUT_AC,LOWPOWER); #define go_forward set_power_H; OnFwd(OUT_AC); #define turn_left1 set_power_L;\ OnFwd(OUT_C); OnRev(OUT_A); #define turn_left0 set_power_L;\ OnFwd(OUT_C); Off(OUT_A); #define turn_right0 set_power_L;\ OnFwd(OUT_A); Off(OUT_C); #define turn_right1 set_power_L;\ OnFwd(OUT_A); OnRev(OUT_C); #define STEP 1 #define nMAX 35 #define short_break Off(OUT_AC); Wait(100); #define cross_line go_forward set_power_H;\ OnFwd(OUT_AC); Wait(20); short_break; task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); int nOnline=0; go_forward; if (SENSOR_3 > 48) { SendMessage(OPEN); Off(OUT_AC); } ClearTimer(0); until (Message() == BACK); OnRev(OUT_AC); Wait(100); until (Message() == GO); while (true) { while (FastTimer(0) < nMAX) { if (SENSOR_1 < THERESHOLD -4) { turn_right1; } else { if (SENSOR_1 < THERESHOLD -2) { turn_right0; } else if (SENSOR_1 < THERESHOLD +2) { go_forward; } else if (SENSOR_1 < THERESHOLD +4) { turn_left0; } else { turn_left1; } if (SENSOR_3 > 48) { SendMessage(OPEN); Off(OUT_AC); } ClearTimer(0); } Wait(STEP); } turn_left1; Wait(nMAX*STEP); cross_line; nOnline++; PlaySound(SOUND_CLICK); ClearTimer(0); if (nOnline == 8) { OnFwd(OUT_A); OnRev(OUT_C); Wait(Z); SendMessage(PUT); } } ClearTimer(0); } #define OPEN 1 #define GO 2 #define PUT 3 #define BACK 4 #define PowerA SetPower(OUT_A,2); #define PowerC SetPower(OUT_C,X); task main() { ClearMessage(); while (true) { until (Message() == OPEN); PowerA; OnRev(OUT_A); Wait(40); PowerC; OnRev(OUT_C); Wait(Y); PowerA; OnFwd(OUT_A); Wait(40); PowerC; OnFwd(OUT_C); Wait(Y); SendMessage(GO); until (Message() == PUT); PowerC; OnRev(OUT_C); Wait(Y); PowerA; OnRev(OUT_A); Wait(40); SendMessage(BACK); } Wait(10); }