[[2007a/A9/ロボコン]]

/*上*/

#define TURN_TIME 237           //180
#define TURN_TIME2 110          //90
#define COLLECT_TIME1 897     //1番上の箱の回収に要する時間
#define COLLECT_TIME 667      //その他の箱の回収に要する時間
#define BACK_TIME 30         //回転の時に箱をまきこまないように後退する時間
#define BACK_TIME2 130       //搭載部分を箱側にむけたあと、回収するための後退時間
#define TURN_MOVE 70         //90度まがるときに、回転の中心を交差点上にもってくる時間

task main()
{
  ClearMessage();
  while(true){
    if(Message()==1){          //1のメッセージを受信したら
      OnRev(OUT_C);Wait(90);Off(OUT_C);  //後ろの腕?を開く
      Wait(BACK_TIME+BACK_TIME2+TURN_TIME-90);       //BACK_TIME+TURN_TIME+BACK_TIME2-90
      OnFwd(OUT_A+OUT_C);Wait(160);Off(OUT_C);
      Wait(100);
      Off(OUT_A);
      OnRev(OUT_C);Wait(90);Off(OUT_C);
      Wait(120);
      OnFwd(OUT_A+OUT_C);Wait(160);Off(OUT_C);
      Wait(110);Off(OUT_A+OUT_C);
      ClearMessage();
    }if(Message()==2){          //2のメッセージを受信したら
      OnRev(OUT_C+OUT_B); Wait(170);   //BCを開いて箱を離す
      Off(OUT_C+OUT_B);  //本体が箱を積んだ地点から離れるのを待つ
      Wait(250);
      OnFwd(OUT_C+OUT_B);Wait(70);Off(OUT_C);      //離れたので、腕?を閉じる 
      Wait(80);Off(OUT_B);
     ClearMessage();
    }if(Message()==3){
      OnRev(OUT_B+OUT_C);Wait(90);Off(OUT_C+OUT_B);   //後ろの腕?を広げる
      Wait(BACK_TIME+BACK_TIME2+TURN_TIME-90);        //BACK_TIME+BACK_TIME2+TURN_TIME-90
      OnFwd(OUT_A+OUT_C);Wait(70);
      OnFwd(OUT_B+OUT_A);Wait(40);Off(OUT_C);
      Wait(40);Off(OUT_B);
      Wait(250);
      Off(OUT_A);
      ClearMessage();
    }if(Message()==4){
      OnFwd(OUT_A+OUT_C);Wait(70);
      OnFwd(OUT_B+OUT_A);Wait(40);Off(OUT_C);
      Wait(40);Off(OUT_B);
      Wait(250);
      Off(OUT_A);
      ClearMessage();
    }
  }
}

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