[[2004/B6/ロボコン]]

左のRCX アーム担当

 /*RCX 左 アーム*/
 int SEKIGAISEN;
 
 task BOUGAI()
 {
  repeat(9999)
  {
   repeat(256)
   {
    SEKIGAISEN = 0;
    SendMessage(SEKIGAISEN);
    SEKIGAISEN = SEKIGAISEN + 1 ;
   }
  }
 }
 task main()
 {
  SetSensor(SENSOR_1,SENSOR_TOUCH); //端子1にタッチセンサー(前)
  SetSensor(SENSOR_2,SENSOR_LIGHT); //端子2にライトセンサー
  SetSensor(SENSOR_3,SENSOR_TOUCH); //端子3にタッチセンサー(真中、後ろ共通)
  start BOUGAI;
  Wait(280);                    //台から降りるまで待つ
  OnFwd(OUT_A);
  until(SENSOR_3==1);           //アームを一番上に上げる
  OnRev(OUT_A);
  Wait(200); Off(OUT_A);        //アームをちょっと下げる
  PlaySound(SOUND_CLICK);
  until(SENSOR_3==1);
  OnRev(OUT_A);
  Wait(300); Off(OUT_A);        //後ろの壁についたらアーム下げ
  repeat(9999)
  {
   ClearTimer(0);
   OnFwd(OUT_C);
   until(SENSOR_1==1 || Timer(0) > 220);          //取り込むまで取り込みを回す
   Off(OUT_C);
   PlaySound(SOUND_CLICK);
   if(SENSOR_1==1 && SENSOR_2 > 37)            //白、緑の時
   {
    until(SENSOR_3 == 1);       //壁につくまでは何もしない
    Wait(1410);                 //スピンする間待つ
    OnFwd(OUT_A); Wait(530);    //5.3秒経つか一番上に上がるまで
    until(SENSOR_3==1);         //アームを上げる
    Off(OUT_A);
    PlaySound(SOUND_CLICK);
    Wait(350);                  //前進する間待つ
    OnRev(OUT_C);
    Wait(300); Off(OUT_C);      //紙パック排出
    Wait(500);                  //後退する間待つ
    OnRev(OUT_A);
    Wait(480); Off(OUT_A);      //アームを下げる
    until(SENSOR_3==1);
   }
   else if(Timer(0) < 220)               //黒の時
   {
    Wait(350);                  //スピンする間待つ
    OnRev(OUT_C);
    Wait(350); Off(OUT_C);      //黒排出
    OnRev(OUT_C);
    Wait(300); Off(OUT_C);      //スピンする間待つ
   }
   else
   {
    OnRev(OUT_C);
    Wait(300); Off(OUT_C);
    until(SENSOR_3==1);
    Wait(100);        //前進する間待つ
    OnFwd(OUT_A);
    until(SENSOR_3==1);
    Off(OUT_A);
    OnRev(OUT_A);
    Wait(430);
    Off(OUT_A);
   }
  }
 }

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