- 追加された行はこの色です。
- 削除された行はこの色です。
[[2004/A5]]
#define forwards(t) OnFwd(OUT_A+OUT_C);Wait(t);
#define backwards(t) OnRev(OUT_A+OUT_C);Wait(t);
#define turn_right(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);
#define turn_left(t) OnRev(OUT_A);OnFwd(OUT_C);Wait(t);
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_TOUCH);
start wall;
forwards(200); //台から降りる動作
PlayTone(523,50);
start search;
}
家のパソコンと大学のパソコンとの間でプログラムのやりとりをするために作ったページ(メールに添付したりもできたのですが、このほうが楽だったので)。ほかのチームの人に見られてないか心配でした。ちなみに全て2号用のもの。本番前日に書いたもので、半分以上は使ってませんが。
task wall修正版
task search()
task wall()
{
while(true)
while(true)
{
if(SENSOR_1 > 35) //緑又は黒のパックが見つかるまで
if(SENSOR_3 == 1)
{
repeat(3)
{
forwards(200);
turn_left(35);
turn_right(70);
turn_left(35);
}
turn_left(120); //パックを探しながら往復
stop search;stop check_sensors;stop comeback;
PlaySound(4);Wait(50);
OnRev(OUT_A);Off(OUT_C);Wait(120);
start search;
}
else //パックを見つけた場合
{
forwards(300); //パックに向かって前進
start check_sensors;
}
}
}
taskwall改
task check_sensors()
task wall()
{
Off(OUT_A+OUT_C);
while(true)
{
if(SENSOR_1 < 30) //黒の場合
if(SENSOR_3 == 1)
{
PlaySound(4);Wait(50);
backwards(200);
turn_left(60);
stop check_sensors; //パックを放して45度旋回
stop search;stop check_sensors;stop comeback;stop line;
PlaySound(4);Wait(50);
OnRev(OUT_A);Off(OUT_C);Wait(120);
start search;
}
else //緑の場合
{
PlayTone(587,50);
turn_left(60);
OnFwd(OUT_A+OUT_C);until(SENSOR_2 < 35);
PlayTone(659,50);
start comeback;
}
}
}
}
task comeback改
task comeback()
{
ClearMessage();
ClearTimer(0);
SendMessage();
do
{
stop search;
ClearMessage();
SendMessage();
start line;
until(Message() != 0);
if(Message() == ){PlaySound(1);Wait(100);SendMessage();Wait(100);}
if(Message() == ){PlaySound(5);Wait(100);forwards(500);backwards(200);turn_left(120);}
if(Message() == ){stop line;PlaySound(1);Wait(100);SendMessage();Wait(100);}
if(Message() == ){PlaySound(5);Wait(100);forwards(1000);}
if(Message() == ){backwards(200);turn_left(120);}
Off(OUT_A+OUT_C);
}
until (Timer(0) < 150);
turn_left(40);
until (Timer(0) < 200);
stop line;
turn_left(50);
start search;
}
注:ロボ3にバンパーとメッセージの追加が必要
task wall()
task line
task line()
{
while(true)
{
if(SENSOR_3 == 1)
if(SENSOR_2 > 35)
{
stop search;
PlaySound(4);Wait(50);
backwards(100);
turn_left(120);
start search;
OnFwd(OUT_C);Off(OUT_A);
}
else
{
OnFwd(OUT_A);Off(OUT_C);
}
}
}