[[2017a/Member]] #define white 49 #define white_gray 48 #define gray 40 #define black_gray 38 #define black 35 #define go_forward OnFwd(OUT_AC); //直進 #define turn_left0 Off(OUT_A);OnFwd(OUT_C); //左折 #define turn_left1 OnRev(OUT_A);OnFwd(OUT_C); //左旋回 #define turn_right0 OnFwd(OUT_A);Off(OUT_C); //右折 #define turn_right1 OnFwd(OUT_A);OnRev(OUT_C); //右旋回 #define migigawa turn_right0;Wait(20);Off(OUT_A);turn_right1;Wait(60);Off(OUT_AC); //右側に移動 #define hidarigawa turn_left0;Wait(20);Off(OUT_C);turn_left1;Wait(60);Off(OUT_AC); //左側に移動 sub hajime() //Aからスタート { OnFwd(OUT_AC); Wait(60); Off(OUT_AC); } sub owari() //最後の直線からAに入る { OnFwd(OUT_AC); Wait(180); Off(OUT_AC); PlaySound(SOUND_DOWN); } sub line_go() //線の左側をトレースし走行 { SetSensor(SENSOR_2,SENSOR_LIGHT); ClearTimer(0); while(FastTimer(0)<20){ if(SENSOR_2>=white){ turn_right1; ClearTimer(0); }else if(SENSOR_2>white_gray){ turn_right0; ClearTimer(0); }else if(SENSOR_2>gray){ go_forward; ClearTimer(0); }else if(SENSOR_2>black_gray){ turn_left0; ClearTimer(0); }else{ turn_left1; } } Off(OUT_AC); } sub line_go2() //線の右側をトレースし走行 { SetSensor(SENSOR_2,SENSOR_LIGHT); ClearTimer(0); while(FastTimer(0)<20){ if(SENSOR_2>=white){ turn_left1; ClearTimer(0); }else if(SENSOR_2>white_gray){ turn_left0; ClearTimer(0); }else if(SENSOR_2>gray){ go_forward; ClearTimer(0); }else if(SENSOR_2>black_gray){ turn_right0; ClearTimer(0); }else{ turn_right1; } } Off(OUT_AC); } sub tyokusinn_sound() //交差点で音を鳴らし直進する { PlaySound(SOUND_UP); OnFwd(OUT_AC); Wait(40); Off(OUT_AC); } sub sasetu_sound() //交差点で音を鳴らし左折する { PlaySound(SOUND_UP); turn_left0; Wait(90); turn_left1; Wait(50); Off(OUT_AC); } sub ichijiteisi_tyokusinn() //交差点で音を鳴らし一時停止し直進する { PlaySound(SOUND_DOWN); Off(OUT_AC); Wait(100); Off(OUT_AC); OnFwd(OUT_AC); Wait(40); Off(OUT_AC); } sub ichijiteisi_sasetu() //交差点で音を鳴らし一時停止し左折する { PlaySound(SOUND_DOWN); Off(OUT_AC); Wait(100); Off(OUT_AC); turn_left0; Wait(90); turn_left1; Wait(40); Off(OUT_AC); } task main() { hajime(); //Aから出て線をトレースし始める line_go(); sasetu_sound(); //Fで左折 line_go(); ichijiteisi_sasetu(); //Qで一時停止、左折 line_go(); tyokusinn_sound(); //Rで直進 line_go(); sasetu_sound(); //Sで左折 line_go(); sasetu_sound(); //Gで左折 line_go(); migigawa; line_go2(); hidarigawa; line_go(); sasetu_sound(); //Hで左折 line_go(); ichijiteisi_tyokusinn(); //T一回目、一時停止、直進 line_go(); ichijiteisi_tyokusinn(); //T二回目、一時停止、直進 line_go(); ichijiteisi_sasetu(); //Rで一時停止、左折 line_go(); tyokusinn_sound(); //Sで直進 line_go(); sasetu_sound(); //Pで左折 line_go(); ichijiteisi_sasetu(); //Eで一時停止、左折 line_go(); owari(); //Aに入る }