[[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);         //アームを上げる(後ろをつつかれて途中でアームが止まらないようにするため)
    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);
   }
  }
 }
右のキャタピラ担当のRCXとの連携のためWaitが随所に盛り込まれている。&br;
出発後22秒たっても紙パックを取れなかったときは出発地点に戻るが、&br;
黒を取ってもタイマーをリセットしてしまうためそこだけは直したかった。&br;
とはいえタイマーを追加したのが前日ということもあり&br;
このあたりが人類の限界だと思い諦めた。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS