- 追加された行はこの色です。
- 削除された行はこの色です。
[[2017a/Member]]
目次
#contents
*課題について [#c3a9ed2f]
詳しくは課題([[2017a/Mission2]])を参照。
*ロボット本体 [#p69d1362]
ロボット本体よりもセンサーを前方に取り付けることによりロボット本体の影によるセンサーで読み取る値のブレを軽減した。
*プログラム [#q9a9ed6a]
#define THRESHOLD 53
#define SPEED_F 30
#define SPEED_S 20
#define turn_left OnFwd(OUT_B,SPEED_S);OnRev(OUT_C,SPEED_S);
#define turn_right OnFwd(OUT_C,SPEED_S);OnRev(OUT_B,SPEED_S);
#define go_forward OnFwd(OUT_BC,SPEED_S)
#define STEP 1
#define cross_line go_forward;Wait(450);
sub line_trace1()
{
SetSensorLight(S1);
long t0 = CurrentTick();
while (CurrentTick()-t0 < 200) {
if (SENSOR_1 < THRESHOLD -12) {
turn_right;
} else if (SENSOR_1 > THRESHOLD +5) {
turn_left;
t0 = CurrentTick()
} else {
go_forward;
t0 = CurrentTick()
}
Wait(STEP);
}
}
sub line_trace2()
{
SetSensorLight(S1);
long t0 = CurrentTick();
while (CurrentTick()-t0 < 150) {
if (SENSOR_1 < THRESHOLD -12) {
turn_left;
} else if (SENSOR_1 > THRESHOLD +5) {
turn_right;
t0 = CurrentTick()
} else {
go_forward;
t0 = CurrentTick()
}
Wait(STEP);
}
}
sub line_trace3()
{
SetSensorLight(S1);
long t0 = CurrentTick();
while (CurrentTick()-t0 < 100) {
if (SENSOR_1 < THRESHOLD -12) {
turn_right;
} else if (SENSOR_1 > THRESHOLD +5) {
turn_left;
t0 = CurrentTick()
} else {
go_forward;
t0 = CurrentTick()
}
Wait(STEP);
}
}
sub line_trace4()
{
SetSensorLight(S1);
long t0 = CurrentTick();
while (CurrentTick()-t0 < 100) {
if (SENSOR_1 < THRESHOLD -12) {
turn_left;
} else if (SENSOR_1 > THRESHOLD +5) {
turn_right;
t0 = CurrentTick()
} else {
go_forward;
t0 = CurrentTick()
}
Wait(STEP);
}
}
sub AE()
{
line_trace1();
PlaySound(SOUND_UP);
turn_right;
Wait(300);
Off(OUT_BC);
}
sub EP()
{
line_trace1();
Off(OUT_BC);
PlaySound(SOUND_DOWN);
Wait(200);
go_forward;
Wait(100);
turn_left;
Wait(900);
Off(OUT_BC);
}
sub PQ()
{
line_trace2();
cross_line;
Off(OUT_BC);
}
sub QR()
{
PlaySound(SOUND_UP);
line_trace4();
PlaySound(SOUND_UP);
}
sub RT()
{
turn_left;
Wait(200);
line_trace2();
Off(OUT_BC);
PlaySound(SOUND_DOWN);
Wait(200);
Off(OUT_BC);
turn_right;
Wait(500);
cross_line;
Off(OUT_BC);
}
sub TT()
{
line_trace1();
Off(OUT_BC);
PlaySound(SOUND_DOWN);
Wait(200);
Off(OUT_BC);
cross_line;
Off(OUT_BC);
}
sub TH()
{
line_trace1();
PlaySound(SOUND_UP);
}
sub HG()
{
line_trace1();
turn_right;
Wait(1500);
line_trace1();
PlaySound(SOUND_UP);
turn_right;
Wait(300);
}
sub GS()
{
line_trace1();
PlaySound(SOUND_DOWN);
Wait(200);
turn_left;
Wait(1500);
cross_line;
Off(OUT_BC);
}
sub SP()
{
line_trace2();
cross_line;
Off(OUT_BC);
}
sub PQ2()
{
PlaySound(SOUND_UP);
line_trace4();
cross_line;
Off(OUT_BC);
}
sub QF()
{
PlaySound(SOUND_UP);
line_trace3();
PlaySound(SOUND_UP);
}
sub FA()
{
line_trace1();
PlaySound(SOUND_DOWN);
}
task main()
{
AE();
EP();
PQ();
QR();
RT();
TT();
TH();
HG();
GS();
SP();
PQ2();
QF();
FA();
}