[[2018a/Member]] プログラム #define BLACK 36 #define LITTLE_BLACK 40 #define LITTLE_WHITE 44 #define WHITE 48 #define LEFT OnFwd(OUT_C,40);OnRev(OUT_A,30);Wait(1);Off(OUT_C); #define LITTLE_LEFT OnFwd(OUT_C,30);OnFwd(OUT_A,20);Wait(1);Off(OUT_AC); #define LITTLE_RIGHT OnFwd(OUT_A,30);OnFwd(OUT_C,20);Wait(1);Off(OUT_AC); #define RIGHT OnFwd(OUT_A,30);OnRev(OUT_C,30);Wait(1);Off(OUT_A); #define FRONT OnFwd(OUT_AC,30);Wait(1);Off(OUT_AC); #define LINE_LEFT if (SENSOR_1 < BLACK) {LEFT;KAZU += 3;} else if (SENSOR_1 < LITTLE_BLACK) {LITTLE_LEFT;KAZU += 1;} else if (SENSOR_1 > WHITE) {RIGHT;KAZU -= 1;} else if (SENSOR_1 >LITTLE_WHITE) {LITTLE_RIGHT;KAZU -= 3;} else {FRONT;KAZU *= 0;} #define LINE_RIGHT if (SENSOR_1 < BLACK) {RIGHT;KAZU += 3;} else if (SENSOR_1 < LITTLE_BLACK) {LITTLE_RIGHT;KAZU += 1;} else if (SENSOR_1 > WHITE) {LEFT;KAZU -= 1;}else if (SENSOR_1 > LITTLE_WHITE) {LITTLE_LEFT;KAZU -= 3;} else {FRONT;KAZU *= 0;} #define AGERU OnRev(OUT_B,10);Wait(1500);Off(OUT_B); #define SAGERU OnFwd(OUT_B,10);Wait(2000);Off(OUT_B); task main() { SetSensorLight(S1); int KAZU=0; AGERU; OnFwd(OUT_AC,30);Wait(700);Off(OUT_AC); repeat(5000){LINE_LEFT;};KAZU *= 0; Off(OUT_AC); while(KAZU < 100) {LINE_LEFT;}; Off(OUT_AC); PlaySound(SOUND_DOUBLE_BEEP); Wait(1000);KAZU *= 0; //Cヲ感知 OnFwd(OUT_AC,30);Wait(400);Off(OUT_AC); repeat(3000){LINE_LEFT;};KAZU *= 0; //Cを通過の後トレスに戻る while(KAZU < 250) {LINE_LEFT;}; Off(OUT_AC); PlaySound(SOUND_UP); KAZU *= 0;Wait(500); //CDの曲がり角を感知 OnRev(OUT_A,40);OnFwd(OUT_C,40);Wait(2000);Off(OUT_AC); repeat(1200){LINE_LEFT};KAZU *= 0; while(KAZU < 100){LINE_LEFT;}; //曲がって復帰 Off(OUT_AC); KAZU *= 0; PlaySound(SOUND_DOUBLE_BEEP); //Dを感知 SAGERU;//35缶をキャッチする OnRev(OUT_A,30);OnFwd(OUT_C,30);Wait(2500);Off(OUT_AC); repeat(1500){LINE_LEFT};KAZU *= 0; //Dを曲がって復帰 while(KAZU < 80){LINE_LEFT;}; Off(OUT_AC); KAZU *= 0;PlaySound(SOUND_UP); //Eを感知 OnFwd(OUT_A,30);Wait(600);Off(OUT_AC); repeat(2000){LINE_LEFT;};KAZU *= 0; while(KAZU < 100){LINE_LEFT;}; Off(OUT_AC); KAZU *= 0; //Fを感知 PlaySound(SOUND_DOUBLE_BEEP);Wait(500); OnRev(OUT_A,40);OnFwd(OUT_C,40);Wait(1500);Off(OUT_AC); repeat(800){LINE_LEFT;};KAZU *= 0; while(KAZU < 100){LINE_LEFT;}; Off(OUT_AC);KAZU *= 0; //Gを感知 PlaySound(SOUND_DOUBLE_BEEP); Wait(1000); repeat(30000){ if (SENSOR_1 < BLACK) {OnRev(OUT_A,40);Wait(1);Off(OUT_AC);} else if (SENSOR_1 < LITTLE_BLACK) {LEFT;} else if (SENSOR_1 > WHITE) {OnRev(OUT_C,30);Wait(1);Off(OUT_AC);} else if (SENSOR_1 > LITTLE_WHITE) {RIGHT;} else {FRONT;} }; repeat(1000){LINE_LEFT;};KAZU *= 0; while(KAZU < 120){LINE_LEFT;}; Off(OUT_AC); //Hを感知 PlaySound(SOUND_DOUBLE_BEEP);Wait(1000);KAZU *= 0; OnFwd(OUT_A,30);OnRev(OUT_C,30);Wait(2500);Off(OUT_AC); repeat(3000){LINE_RIGHT;};KAZU *= 0; while(KAZU < 120){LINE_RIGHT;}; Off(OUT_AC); //Iを感知 PlaySound(SOUND_DOUBLE_BEEP);Wait(1000);KAZU *= 0; OnFwd(OUT_A,30);OnRev(OUT_C,30);Wait(2500);Off(OUT_AC); while(KAZU < 150){LINE_RIGHT};Off(OUT_AC); PlaySound(SOUND_UP);KAZU *= 0; //Lを感知 OnFwd(OUT_C,30);Wait(300);Off(OUT_AC); while(KAZU < 150){LINE_RIGHT;}; Off(OUT_AC); PlaySound(SOUND_UP);KAZU *= 0; //Kを感知 OnFwd(OUT_C,30);Wait(300);Off(OUT_AC); while(KAZU < 100){LINE_RIGHT;};Off(OUT_AC); PlaySound(SOUND_DOUBLE_BEEP);KAZU *= 0;Wait(1000); //Jを感知 OnFwd(OUT_C,30);OnRev(OUT_A,30);Wait(2500);Off(OUT_AC); AGERU; OnRev(OUT_AC,30);Wait(1000);Off(OUT_AC); OnFwd(OUT_A,30);OnRev(OUT_C,30);Wait(4000);Off(OUT_AC); repeat(2000){LINE_LEFT;};KAZU *= 0; while(KAZU < 100){LINE_LEFT;}; Off(OUT_AC); PlaySound(SOUND_DOUBLE_BEEP);Wait(1000);KAZU *= 0; //Bを感知 OnFwd(OUT_A,30);OnRev(OUT_C,30);Wait(1500);Off(OUT_AC); repeat(1000){LINE_LEFT;};KAZU *= 0; while(KAZU < 100){LINE_LEFT;}; Off(OUT_AC); OnFwd(OUT_AC,30);Wait(500);Off(OUT_AC); }