- 追加された行はこの色です。
- 削除された行はこの色です。
[[2014a/Member]]
#define Line_Color 60
#define Max 40
#define H 60
#define L 25
#define Step 4
#define cross_time 500
sub go_fwd()
{
OnFwd(OUT_AC,H);
}
sub turn_left()
{
OnFwd(OUT_A,L);
OnRev(OUT_C,L);
}
sub TURN_LEFT()
{
OnFwd(OUT_A,L);
Off(OUT_C);
}
sub turn_right()
{
OnRev(OUT_A,L);
OnFwd(OUT_C,H);
}
sub TURN_RIGHT()
{
Off(OUT_A);
OnFwd(OUT_C,H);
}
sub short_break()
{
Off(OUT_AC);
Wait(1000);
}
sub cross_line()
{
OnFwd(OUT_AC,L);
Wait(cross_time);
}
task main()
{
OnFwd(OUT_AC);
...
SetSensorLight(S1);
int nOnline=0;
int nCrossline=1;
OnFwd(OUT_AC,L);
until(SENSOR_1 <= Line_Color);
short_break();
cross_line();
short_break();
while(true){
while(nCrossline < 6){
while(nOnline < Max){
if(SENSOR_1 < Line_Color-15){
turn_right();
nOnline++;
}else{
if(SENSOR_1 < Line_Color-7){
TURN_RIGHT();
}else if(SENSOR_1 < Line_Color+7){
go_fwd();
}else if(SENSOR_1 < Line_Color+15){
turn_left();
}else{
TURN_LEFT();
}
nOnline=0;
}
Wait(Step);
}
short_break();
cross_line();
nOnline=0;
OnRev(OUT_A,L);
OnFwd(OUT_C,L);
Wait(500);
nCrossline++;
}
short_break();
OnRev(OUT_AC,L);
Wait(1500);
short_break();
OnFwd(OUT_AC,75);
Wait(500);
short_break();
OnRev(OUT_AC,L);
Wait(2000);
short_break();
nCrossline=0;
}
}
}