- 追加された行はこの色です。
- 削除された行はこの色です。
[[ロボティクス入門ゼミ]]
[[2006a/MemberOnly/進行状況C]]
[[2006a/C5/ロボコン]]
[[2006a/C5/ロボコン/本体編]]
[[2006a/C5/ロボコン/プログラム編]]
[[2006a/C5/ロボコン/プログラム編/左]]
*プログラム 制作者:藤巻、坂口 [#ob812c9f]
int line_number;
sub go()
OnRev(OUT_A+OUT_C);
until((SENSOR_2<40)&&(SENSOR_3<40));
OnRev(OUT_A);OnFwd(OUT_C);Wait(200); //
OnFwd(OUT_A+OUT_B);
until((SENSOR_2<40)&&(SENSOR_3<40));//
line_number=line_number+1;//
OnFwd(OUT_A+OUT_B);
until((SENSOR_2<40)&&(SENSOR_30<40));//
line_number=line_number+1; //
}
sub back()//
{
OnFwd(OUT_A+OUT_C);
until((SENSOR_2<40)&&(SENSOR_3<40));
OnRev(OUT_A);OnFwd(OUT_C);Wait(200);
OnRev(OUT_A+OUT_B);
until((SENSOR_2<40)&&(SENSOR_3<40));
line_number=line_number+1;
OnRev(OUT_A+OUT_B);
until((SENSOR_2<40)&&(SENSOR_3<40));
line_number=line_number+1;
}
task main()
{
SetSensor(SENSOR_1,SENSOR_TOUCH);
SetSensor(SENSOR_2,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
ClearMessage();
while(Message() !=0) //向こうから何かのメッセージを受け取る まで続けます。
{
SendMessage(1);
Wait(50); //メッセージ1を送り続けます。
}
until(Message() !=0); //何かのメッセージを受けたら、
OnFwd(OUT_A);OnRev(OUT_C);Wait(800); //180°旋回します。
OnRev(OUT_B);Wait(1000); //腕を上げ、
OnRev(OUT_A+OUT_C);
until(SENSOR_1==1); //タッチセンサーに触るまで(缶にあたるまで)します。
OnFwd(OUT_A+OUT_C);Wait(50);
OnFwd(OUT_B);Wait(1000); //少し後退し、腕をおろします。
OnFwd(OUT_A);OnRev(OUT_C);Wait(800); //180°旋回します。
line_number=0; //はじめに変数に0を代入します。
go(); //この動作が終わった後「line_number」は2なので
until(line_number==2); //交差を2回すぎた後、
OnFwd(OUT_A);OnRev(OUT_C);Wait(200); //90°旋回します。
line_number=0; //はじめに変数に0を代入します。
go(); //この動作が終わった後「line_number」は2なので
until(line_number==2); //交差を2回すぎた後、
OnFwd(OUT_A);OnRev(OUT_C);Wait(200); //90°旋回します。
OnFwd(OUT_A+OUT_C);
OnRev(OUT_B);Wait(1000); //腕を上げ、
back(); //缶をつかんだ後、そのままスタート地点まで戻ります。
OnRev(OUT_A);OnFwd(OUT_C);Wait(200); //90°左旋回し後ろ向きになって
OnRev(OUT_A+OUT_C);Wait(100); //スタート地点まで戻ります。
ClearMessage();
while(Message() !=0) //向こうから何かのメッセージを受け取るまで続けます。
{
SendMessage(1);
Wait(50); //メッセージ1を送り続けます。
}