[[ロボティクス入門ゼミ]]

[[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を送り続けます。
 }


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS