- 追加された行はこの色です。
- 削除された行はこの色です。
[[2018a/Member]]
*ライトレース [#b1a6efbd]
#contents
*プログラム [#b0e40d01]
#define llt OnRev(OUT_A,50); OnFwd(OUT_C,30); Wait(1);//大きく左に回る
#define lrt OnFwd(OUT_A,30); OnRev(OUT_C,50); Wait(1);//大きく右に回る
#define ternleft OnRev(OUT_A,50); OnFwd(OUT_C,10);//左に回る
#define ternright OnFwd(OUT_A,10); OnRev(OUT_C,50);//右に回る
#define go OnRev(OUT_A,50); OnRev(OUT_C,50);//直進する
#define back OnFwd(OUT_A,50); OnFwd(OUT_C,50);//後退する
#define close RotateMotor(OUT_B,50,90);
#define open RotateMotor(OUT_B,50,-90);
task main()
{ SetSensorLight(S3);
int n=0;
while(n<=250) //bまで
{
if(SENSOR_3<45) //B
{
lrt; n++;
}
else if(SENSOR_3<52) //G
{
go; n=0;
}
else
{
llt; n=0; // W
}
}
Off(OUT_AC);
Wait(1000);
RotateMotor(OUT_A,50,-130);
n=0;
while(n<=300) //cまで
{
if(SENSOR_3<45) //B
{
lrt; n++;
}
else if(SENSOR_3<52) //G
{
go; n=0;
}
else
{
llt; n=0; // W
}
}
Off(OUT_AC);
Wait(1000);
RotateMotor(OUT_A,50,-300); //C turn
n=0;
while(n<=200)
{
if(SENSOR_3<45) //B
{
llt; n++;
}
else if(SENSOR_3<51) //G
{
go; n=0;
}
else
{
ternright; n=0; // W
}
}
Off(OUT_AC);
Wait(2000); //D直前の角で止まる
n=0;
while(n<=200) //D
{
if(SENSOR_3<45) //B
{
llt; n++;
}
else if(SENSOR_3<51) //G
{
go; n=0;
}
else
{
ternright; n=0; // W
}
}
Off(OUT_AC);
Wait(1000); //D到着
close;
Off(OUT_ABC);
RotateMotor(OUT_A,50,-180);
Wait(1000); //hasamu
n=0;
while(n<=200)
{
if(SENSOR_3<45) //B
{
llt; n++;
}
else if(SENSOR_3<51) //G
{
go; n=0;
}
else
{
ternright; n=0; // W
}
}
OnRev(OUT_AC,50);
Wait(500);
Off(OUT_AC); //E turn
n=0;
while(n<=400)
{
if(SENSOR_3<45) //B
{
llt; n++;
}
else if(SENSOR_3<51) //G
{
go; n=0;
}
else
{
ternright; n=0; // W
}
}
Off(OUT_AC);
Wait(1000);
n=0;
while(n<=400)
{
if(SENSOR_3<45) //B
{
llt; n++;
}
else if(SENSOR_3<51) //G
{
go; n=0;
}
else
{
ternright; n=0; // W
}
}
Off(OUT_AC);
go;
Wait(500); //s1
n=0;
while(n<=400)
{
if(SENSOR_3<45) //B
{
lrt; n++;
}
else if(SENSOR_3<52) //G
{
go; n=0;
}
else
{
llt; n=0; // W
}
}
Off(OUT_AC);
go;
Wait(500); //s2
n=0;
while(n<=230)
{
if(SENSOR_3<45) //B
{
llt; n++;
}
else if(SENSOR_3<51) //G
{
go; n=0;
}
else
{
ternright; n=0; // W
}
}
Off(OUT_AC);
Wait(1000);
RotateMotor(OUT_C,50,-310); //H turn
n=0;
while(n<=200)
{
if(SENSOR_3<45) //B
{
llt; n++;
}
else if(SENSOR_3<51) //G
{
go; n=0;
}
else
{
ternright; n=0; // W
}
}
Off(OUT_AC);
Wait(1000); //I stop
RotateMotor(OUT_C,50,-350);
n=0;
while(n<=250)
{
if(SENSOR_3<45) //B
{
lrt; n++;
}
else if(SENSOR_3<52) //G
{
go; n=0;
}
else
{
llt; n=0; // W
}
}
Off(OUT_AC);
Wait(500); //L
RotateMotor(OUT_A,50,-90);
Off(OUT_A);
n=0;
while(n<=230)
{
if(SENSOR_3<45) //B
{
lrt; n++;
}
else if(SENSOR_3<52) //G
{
go; n=0;
}
else
{
llt; n=0; // W
}
}
Off(OUT_AC);
Wait(500); //k
RotateMotor(OUT_A,50,-90);
Off(OUT_A);
n=0;
while(n<=230)
{
if(SENSOR_3<45) //B
{
lrt; n++;
}
else if(SENSOR_3<52) //G
{
go; n=0;
}
else
{
llt; n=0; // W
}
}
Off(OUT_AC);
Wait(1000);
RotateMotor(OUT_C,50,360);
open;
Off(OUT_B);
back; //帰還準備
Wait(250);
RotateMotor(OUT_C,50,-60);
Off(OUT_C);
go;
until(SENSOR_3 <= 45);
n=0;
while(n<=250)
{
if(SENSOR_3<45) //B
{
lrt; n++;
}
else if(SENSOR_3<52) //G
{
go; n=0;
}
else
{
llt; n=0; // W
}
}
Off(OUT_AC);
Wait(1000);
RotateMotor(OUT_A,50,-180);
n=0;
while(n<=250)
{
if(SENSOR_3<45) //B
{
lrt; n++;
}
else if(SENSOR_3<52) //G
{
go; n=0;
}
else
{
llt; n=0; // W
}
}
Off(OUT_AC);
Wait(1000);
}