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);
  }
 }
}

右のキャタピラ担当のRCXとの連携のためWaitが随所に盛り込まれている。
出発後22秒たっても紙パックを取れなかったときは出発地点に戻るが、
黒を取ってもタイマーをリセットしてしまうためそこだけは直したかった。
とはいえタイマーを追加したのが前日ということもあり
このあたりが人類の限界だと思い諦めた。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-02-21 (月) 16:31:42 (5296d)