- 追加された行はこの色です。
- 削除された行はこの色です。
[[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に入る
}