本番用の下半身パーツのプログラムです 最初にクレーンの重さで転倒しないように後退で着地し、半回転して微速前進、箱を認識したら停止し、箱を捕 らえたことを確認した通信を受け、緑色の線にまで後退し、転回、緑の線に沿って箱置場に行き時間を使って 停止、転回。箱が置かれたら上記の操作を逆に行いピラミッドに戻るようになっていました。 しかし、センサーがうまく機能しないでREPEAT以降がうまく行かなかったため、時間による方式に変更しました。 また、スタート時の位置に箱が置ければいいという流言飛語から箱置場へ行くプログラムも削除、試合中も色 々組んでいたため試合前のデータは残っていません。 工夫として、時間調整がしやすいようにSUBシステムを多用しています。 試合中にはバッテリーに余力があっ たので、音楽を鳴らしていました。 反省として最初の後退が長すぎてピラミッドをハデに壊してしまうために、十分に転回できずに箱を取れない ばかりか、隣接するロボットを攻撃する破壊神となりました。
/*roboDX2*/ //本番用 下半身パーツ
#define Do 523 #define Do1 554 #define Re 587 #define Re1 622 #define Mi 659 #define Fa 698 #define Fa1 740 #define So 784 #define So1 831 #define Ra 880 #define Ra1 932 #define Si 988
sub back() //後退用subプログラム { Off(OUT_A+OUT_C); SetPower(OUT_A,6); SetPower(OUT_C,6); OnFwd(OUT_A); OnRev(OUT_C); }
sub turn() //回転用subプログラム { Off(OUT_A+OUT_C); SetPower(OUT_A,7); SetPower(OUT_C,7); OnFwd(OUT_C); OnFwd(OUT_A); }
sub go() //前進用subプログラム { Off(OUT_A+OUT_C); SetPower(OUT_A,6); SetPower(OUT_C,6); OnRev(OUT_A); OnFwd(OUT_C); } sub teisi() //停止用以下略 {SetPower(OUT_A,6); SetPower(OUT_C,6); Off(OUT_A+OUT_C); }
task main() //基本プログラム { back();Wait(300); //スタート地点より後退進入 turn();Wait(408); //半回転 teisi();Wait(200); PlaySound(SOUND_DOWN); //着地後スタンバイ完了の合図 go(); Wait(200); //前進 ・ピラミッドへ repeat(10) //箱手前より始まり以下の動作を繰り返す { teisi();Wait(380); //この時間中にクレーンが箱を動かす turn(); Wait(408); //半回転 go();Wait(300); //箱置場へ前進 Off(OUT_A+OUT_C);Wait(200); PlaySound(SOUND_DOWN); //本番前プログラムの名残、箱を置くと鳴る back();Wait(150); //転回しやすいように少し後退 turn(); Wait(408); //転回 Off(OUT_A+OUT_C);Wait(920); //手・腕が着地後スタンバイ状態になるまで待機 go();Wait(050); Off(OUT_A+OUT_C); //停止 } }