- 追加された行はこの色です。
- 削除された行はこの色です。
[[2019a/Member]]
#define t_r OnFwd(OUT_A);OnRev(OUT_C);Wait(60);Off(OUT_AC);ClearTimer(0);
int s;
sub follow_line_left()
{
*課題 [#z632fddf]
課題については[[2019a/Mission2]]を参照。
私はAを出発しMでシュートをする方のプログラミングを試みた。
*ロボットについて [#xe9271e7]
センサーの近くにアームをつけると影になってしまい、光の当たり方でロボットの動きが大きく変わってしまうので前後に分けて付けることにした。
* [#d3cf433c]
AからDまでは線の左側をトレース
*プログラミング [#ze0538ab]
はじめに、defineを用い、右折を定義した。
そして、黒と白の境界をトレースさせるためのプログラムをサブルーチンで定義した。
センサーが黒色を感知している長さで動きを変化させるため、fasttimerとその時間を決めるためにグローバル変数を用いた。
#define t_r OnFwd(OUT_A);OnRev(OUT_C);Wait(60);Off(OUT_AC);ClearTimer(0);//90度 右折
int s; //グローバル変数
sub follow_line_left() //線の左側のトレース
{
while(FastTimer(0)<s)
{
if(SENSOR_2>42){OnFwd(OUT_A);OnRev(OUT_C);ClearTimer(0);}
else if(SENSOR_2>40){OnFwd(OUT_A);ClearTimer(0);}
else if(SENSOR_2>36){OnFwd(OUT_AC);ClearTimer(0);}
else if(SENSOR_2>34){OnFwd(OUT_C);ClearTimer(0);}
else{OnFwd(OUT_C);OnRev(OUT_A);}
}
}
sub follow_line_right()
{
}
sub follow_line_right(){
while(FastTimer(0)<s)
{
{
if(SENSOR_2>42){OnFwd(OUT_C);OnRev(OUT_A);ClearTimer(0);}
else if(SENSOR_2>40){OnFwd(OUT_C);ClearTimer(0);}
else if(SENSOR_2>36){OnFwd(OUT_AC);ClearTimer(0);}
else if(SENSOR_2>34){OnFwd(OUT_A);ClearTimer(0);}
else{OnFwd(OUT_A);OnRev(OUT_C);}
}
}
sub cross_line()
{
}
sub cross_line(){
Off(OUT_AC);Wait(100);
OnFwd(OUT_AC);Wait(20);
ClearTimer(0);
}
task main()
{
}
A~D
task main()
{
s=22;
SetSensor(SENSOR_2,SENSOR_LIGHT);
ClearTimer(0);
follow_line_left();
Off(OUT_AC);Wait(100);
OnFwd(OUT_A);OnRev(OUT_C);Wait(40);
OnFwd(OUT_AC);Wait(20);
ClearTimer(0);
D~G
s=24;
follow_line_right();
Off(OUT_AC);Wait(50);
OnFwd(OUT_AC);Wait(30);
t_r
follow_line_right();
Off(OUT_AC);Wait(50);
OnFwd(OUT_AC);Wait(30);
t_r
OnRev(OUT_AC);Wait(30);Off(OUT_AC);
s=20;
follow_line_right();
Off(OUT_AC);
Wait(100);
G~K
t_r
s=18;
follow_line_right();
cross_line();
follow_line_right();
cross_line();
follow_line_right();
Off(OUT_AC);
OnFwd(OUT_A);OnRev(OUT_C);Wait(50);
OnRev(OUT_AC);Wait(20);
follow_line_right();
Off(OUT_AC);
K~L
OnFwd(OUT_A);OnRev(OUT_C);Wait(50);Off(OUT_AC);
OnRev(OUT_AC);Wait(100);Off(OUT_AC);
OnRev(OUT_B);Wait(10);Off(OUT_B);
L~M
s=23;
ClearTimer(0);
follow_line_right();
cross_line();
follow_line_right();
cross_line();
follow_line_left();
Off(OUT_AC);
OnFwd(OUT_A);OnRev(OUT_C);Wait(110);
M(シューーーーーーーーーーーーーーーーーーーーーーート!!!!!!!!)
OnFwd(OUT_C);OnRev(OUT_A);Wait(50);
Off(OUT_AC);Wait(80);
OnFwd(OUT_B);Wait(10);
Off(OUT_ABC);
}
}
*問題点 [#p35fef67]
-動きがガタガタし過ぎである。
*まとめと感想 [#y774b0c4]