マイクロチップ社のマイクロコンピュータPIC16C/F84を使った製作例の
製作方法の紹介です。(「ゲームラボ’98/7、8月号に掲載)
まず全体は光線銃そのものと、的になる受光セットの2つからできて
います。
ゲームの仕方は、受光セットの電源をONとすると、数秒後にブザーが
鳴り始め、同時に、数字表示器が時間カウント表示を始めます。
これが始まったら光線銃の射的として動作し始めたことになり、光線銃
を発射して当たれば、その時点の時間で時間カウントが停止し、開始
時点からの時間を10msec単位で表示したまま停止します。
もう一度光線銃が当たると表示が消え、ゲームが再開しますので、
繰り返しゲームを楽しむことが出来ます。
これで早撃ちの時間を競うゲームが出来ます。
【光線銃の中身は?】
光線銃はどうやって作るのでしょうか?
遠くまで届く強い光線を瞬間的に発光させるには?
これを実現するアイデアはカメラのフラッシュにあります。つまり、高い
電圧の電気をコンデンサに充電し、溜まった電気を瞬間的にランプに
流すことで強い光を瞬間的に出せます。
しかし、これに適するランプがあるでしょうか? 色々探し実験した結果
は、懐中電灯に使われている頭がレンズになっているランプが一番の様
です。レンズのお陰で光を遠くまで飛ばすことが出来ます。
これで2〜3mは届きます。さらに遠くまで飛ばすため、凸レンズをもう
ひとつランプの前に追加すると光のビームが細く収束できるので、5m
程度までは届くように出来、しかも正確に的に当てる技術が競える様にも
できますが、今回は、ケースに合う小型レンズを見つけることが出来ませ
んでしたのでレンズは付けていません。
下図が光線銃の回路図で非常に簡単な回路です。
発光部は、懐中電灯用のレンズ付きランプ(2.2V 0.2A)ですが、そのまま
3V程度の電池で光らせただけでは、光の量が不足して的まで届きません。
そこで工夫ですが、電圧を高くすれば明るく光ります。しかし連続で高い
電圧を加えれば直ぐランプが切れてしまいますので、カメラのフラッシュと
同じ原理で、コンデンサに充電した高電圧を、引き金となるスイッチを押し
た時、瞬間的に流すことで瞬時閃光するようにします。
コンデンサに貯えられた電気は一瞬で無くなりますから、ランプが切れる
ことはありません。電圧は9V電池を使います。
コンデンサの容量は大きいほど明るく長い時間光りますが、今回は
3000μF(16V)を使いました。これで閃光の持続時間(受光部の出力継続
時間)は、約数十msec程度となりました。
この方法の欠点は、一度光を放射すると、2秒程度は次の放射が出来
ないことです。そのため連続早撃ち競争のような競技は出来ないことに
なります。
下図が出来あがった写真で、ランプ、コンデンサを、プリント基板の端材に
組んで非透明プラスチックケースに納めています。
ケース側面のランプの前に丸い穴をあけて余分な光が外に出ないように
しています。出来れば、この穴にパイプを接着して、パイプの先にレンズを
付ければ完璧な光線銃となります。写真のように手に握って持ち、側面の
スイッチを押すことで光線が発射されます。
電池とスイッチ、電球とコンデンサ、抵抗、これだけで出来ています。
【受光セットは?】
下図が受光セット部の全体回路です。PIC16F84を中心に、セグメント発光
ダイオード関連と、受光素子、ブザーが接続されています。
入力のフォトダイオードの監視は、ダイナミック点灯の繰り返しループの
中で一緒に処理する様にします。本回路図で光線銃と受光セットを約2〜
3mの距離まで離しても確実に動作しました。
電源部はお決まりの3端子レギュレータを使っています。動作電流は、
セグメント発光ダイオードが全桁点灯しても50mA程度ですので78Lタイプの
レギュレータで十分です。
これらを小型プリント基板で組み上げ、小型非透明プラスチックケースに
納めました。
前面パネルには数字表示器用と受光素子用の穴をあけています。
発光ダイオードの窓には色付きアクリルを付けています。
前面には3桁のセグメント発光ダイオードと、光検知用の穴があいています。
中身は、下図のようにPICだけで出来ています。セグメント発光ダイオードは
セグメントは直接PICでドライブし、桁ドライブは電流がセグメントの和になって
多くなるので、トランジスタでドライブしています。
PICの下側に見えるトランジスタタイプの物がフォトトランジスタです。
【受光素子と当たりの判定】
光を検知する素子には、CdS、フォトダイオード、フォトトランジスタの3種類
が良く使われます。
この中で光線銃の閃光を受信する受光素子には、感度が良いことと応答
速度が早いことからフォトトランジスタを使いました。さらに、素子の前面に
レンズが付いていて特に高感度のタイプを使いました。使い方としては、
フォトトランジスタの負荷抵抗を大きくすれば感度が上がりますが、余り感度
を上げすぎると室内の光だけで反応してしまいますので、抵抗値を適当に
調整します。固定抵抗でなく500KΩ程度のボリュームにして感度が調整でき
るようにしても便利かと思います。ケースに収納する時にも、周りからの外光
が入り難いように、フォトトランジスタの前面にだけ小さな穴をあけ、頭部が
ケースパネル面から少し引っ込んだようにして取り付けます。
このフォトトランジスタの出力は常時電源電圧で、光を検知すると0ボルト
になりますので、直接PICの入出力ピンに接続することが出来ます。
この入出力ピンをプログラムで入力モードに設定して、常時入力しながら
監視します。
当たり判定は、一度光を検知したら、一定時間待って、さらに光が継続
しているかどうかを再確認して確実に光を検知することで行いますが、
この一定時間をどれほどにするかで、当たりの確率が変わります。つまり、
電子銃からの閃光は数十msecの持続時間で、それをフォトトランジスタで
検知した後の持続時間は、下図のように銃と的の距離と角度により変化し
ます。近くて正面を向いているほど検知持続時間が閃光の時間に等しく
なって行きます。そこでこの持続時間を長め(数十msec)にすることで
正確に銃の光が的に当たらないと当たりと判定しないようにも出来ます。
次にすべきは、一度当たり判定をしたら、早撃ちの時間を表示したまま
ゲームを停止します。
その後しばらくは光を検知しても何もしないようにする必要があります。
そうしないと時間表示が次々と変化してしまいゲームにならなくなってしま
います。
こういう流れをプログラムで実現するためには、プログラムフラグというもの
を使います。つまり、一度当たり判定をしたらフラグをONとし、このフラグが
ONの間は、時間のカウントをせず同じ表示値のままとします。そして一定時間
経過(これもプログラムでカウントする)後は、次の光を検知したら表示データ
をブランクにしてゲームを再開するようにします。
【部品表】
今回の光線銃ゲームに使っている部品は下表のようになります。
光線銃の部品リスト
記号 説 明 規格、品名 数量
プラスチックケース 130x40x25 1
汎用基板 100x30 1
レンズ付き小型ランプ 2.2V 0.2A 1
同上用ソケット ゴムプッシュ付き 1
電解コンデンサ 3000μF16V 1
抵抗 1/4W 470Ω 1
電池(9V) 006P 1
電池アダプタ リード線付き 1
プッシュボタンスイッチ パネル取付け 1
受光部の部品リスト
記号 説 明 規格、品名 数量
プラスチックケース 120x60x25 1
プリント基板 86x54mm 1
SKT ICソケット 18pin 1
BZ 圧電ブザー FUJI EB20 1
7セグメント発光ダイオード GL8P03 3
フォトトランジスタ S601A 1
REG 3端子レギュレータ 78L05 1
BAT 9V電池 乾電池006P 1
電池アダプタ リード線付き 1
XTAL クリスタル発振子 10MHz 1
IC1 マイクロチップ PIC16F84-10 1
トランジスタ 2SC1815 3
抵抗 1/4W 150KΩ 1
〃 200Ω 7
〃 1KΩ 1
〃 4.7KΩ 4
セラミックコンデンサ 20pF 2
〃 0.1μF 1
電解コンデンサ 47μF10V 2
基板用3Pトグルスイッチ AC125V 0.3A 1
その他 スペーサ,ネジ,ナット 少々