赤外線バトルの仕様 |
赤外線バトルと言っても、ただ、「撃った!・命中した!」だけのシステムじゃつまらないので、せっかくオリジナルを作るんだったら、もっと面白そうな仕様にしたい! で、考えてみたのが、下記の仕様です。 | ||
◎大砲のパワーは、5段階+1(機銃) 1.88mm以上(-80ダメージ) 2.70mm以上(-50ダメージ) 3.60mm以上(-30ダメージ) 4.50mm以上(-20ダメージ) 5.30mm以上(-10ダメージ) 6.機関銃(0ダメージ) ◎車両ごとに、装甲値(10〜200)を設定 一発被弾するごとに、上記のダメージがその車両の装甲値から引かれ、装甲値が0以下になると 撃破!、装甲値が、もとの50%を切ると、極端に動きが鈍くなる ◎弾数の設定 車両ごとに、弾数を設定し、それ以上は補給しないと打てない。 ◎補給モード トラック等の補給車両が出す信号により、補給モードに入る。 (信号は、トラック・運搬車の後部より発信) 補給中は、可動出来ず、さらに、被弾すると装甲値に関係なく、撃破される。 補給時間は、補給弾数(最大弾数-残弾数)×使用する砲弾のサイズで計算される。 (要するに、大型の戦車ほど、補給に時間がかかる) ◎最大7チームのチームわけが可能。 | |||
赤外線送信機の作成 | さすがにパンサー一台だけではテストも出来ず、プログラムの製作が進まないので、赤外線の送信機を作成してみました。 | ||
10個のボタンで、色々な赤外線データを発信します。 大砲や機関銃を撃つだけならこんなにボタンは要りませんが、ついでに前進・後進・旋回等も赤外線で行えるように、欲張った仕様になっています。(笑) 敵・味方の識別コードや大砲の強さは、通常はPICのプログラムに直接書き込むつもりですが、このテスト用の送信機は頻繁に変更するので、ディップスイッチで設定可能にしています。 電源ONで、最初にディップスイッチの値(8ビット)を読み取り、その値の先頭5ビットを大砲の強さ、後ろ3ビットを敵・味方識別コードにしています。 ディップスイッチの値を読み取った後で、10個のスイッチが押されているかどうかを調べて、押されていると、赤外線を発信します。 10個のボタンは、1個ずつ押すだけではなく、2個以上の組み合わせも識別できます。 例えば、真ん中の赤のボタンを押すと、大砲の赤外線を発信し、左下の赤ボタンを押しながら同じく中央の赤ボタンを押すと、機銃の赤外線を発信すると言った使い方も出来ます。 試しに作ってみたプログラムがこれです→sout1.asm | |||
赤外線受信基板 |
赤外線受信基板自体は、以前からいくつも作ってあって、そのうち良く使うのがこの3点です。 |
左の2枚は殆ど同じ仕様で、赤外線の受信データ8ビットを、8個のLEDのON・OFFで表示します。 同じ基板が2種類あるのは、2種類の赤外線受光器(受信モジュール)を同時にテストしてみて、相性の良い方を選別したり、2種類の受信プログラムを作ってみて、でどちらが感度が良いかをテストするのに使うためです。 右側の大きな基板は、大砲や機銃で被弾した時の、音やアクションのプログラムをテストするための物で、 複数のLEDを点滅させたり、リレーを使ってアクションのスイッチのON・OFFが出来るようになっています。 |
|
パンサー用プログラムの製作 |
上の、赤外線送信機を使ってテストしながら、赤外線送受信と被弾処理等のルーチンを追加していきます。 |
<2個のPIC> 赤外線PIC用の基板は、2個のPICを使用しています。 これは、赤外線送受信に時間が掛かるため、1個のPICで全てを行うと、アンプやサーボに信号を送るタイミングがバラついたり遅れたりと、極端に動きが悪くなるためです。 そこで、1個のPICは、これまで通り、4ch受信機からの信号入力と走行用アンプとサーボの制御を行い、もう一個のPICで、赤外線の送受信と音の制御をメインに行っています。 <PIC間の通信> 2つのPICを使うことで、新たな問題が発生します。 当然2つのPICは連携して動くので、そのためにはPIC間での通信が必要になります。 例えば、受信機から大砲発射の信号が送られてきた時に、AのPICから、BのPICに「大砲発射」を伝え、 AのPICでは、振動と砲身ブローバックの動作、BのPICでは大砲音と赤外線の発射を同時に行わなければなりません。 逆に、被弾した時は、BのPICで受信した被弾データを、AのPICに伝え、振動や音・被弾後の処理をそれぞれ行わなければなりません。 <通信方法、その1> 基板では、PICの4本の足をお互いのPICにダイレクトに接続しています。 この4本を使って通信するのですが、簡単なのは、4本の信号のON・OFFの組み合わせで通信する方法で、昨年作成したM26パーシングの基板がこの方法でした。 4つのON・OFFの信号の組み合わせは、16パターンなので、最大16種類の信号を相手のPICに送れる事になります。 ただし、4本全ての信号を使って出力すると、その間入力が一切出来なくなり、相手のPICが受信できるタイミングなのかどうかの判断が出来なく、信号の垂れ流しになります。 それだとマズいので、4本のうち1本は入力用に残す必要があります。 そうすると、データが送れるのは、3本のON・OFF信号となり、データーの数も7種類と、一挙に少なくなります。 <通信方法、その2> 7種類のデータしか送れないのはちょっと心もとないので、今回は別の通信手段を考えました。 使用するのは、3本の線で、 1.A PIC → B PIC (Bにデータを送る時にONにする) 2.A PIC ← B PIC (Aにデータを送る時にONにする) 3.A PIC ←→ B PIC (実際に送るデータをパルス(ON)の時間(1〜250)で送信) 送信するデータをON・OFF信号の組み合わせではなく、ONの時間の長さで表す方法で、受信器やサーボ・アンプの制御に使っている方法と同じです。 プログラムは多少複雑になりますが、送信できるデータは1バイト(256種類)と一挙に増えるので、今回はこの方法を試してみました。 |
最終更新日2003.11.04