赤外線バトル用プログラム

赤外線バトルの仕様 赤外線バトルと言っても、ただ、「撃った!・命中した!」だけのシステムじゃつまらないので、せっかくオリジナルを作るんだったら、もっと面白そうな仕様にしたい!

で、考えてみたのが、下記の仕様です。
◎大砲のパワーは、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種類)と一挙に増えるので、今回はこの方法を試してみました。





戻る


MENUへ戻る

最終更新日2003.11.04