[[ロボティクス入門ゼミ]] [[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を送り続けます。 }