「パチスロ」ゲームコントローラーを作る
キーボードが壊れる前に・・・
最近、私が寝た後に妻がネットゲームの777 TOWN.netに熱中していて、怒涛の如くスペースキーを連打しまくっています。
このままでは、愛機のVAIOのキーボードがご臨終となりそうです。
押し入れから、以前にユニバーサル基板で作成したAVR-USBを使用したキーボード入力基板を発掘して秋月の無接点プッシュスイッチを使用して、キーボードに代わるコントローラーを作成してみることにしました。
結構前に作成したAVR-USBの評価基板です。
現在は、V-USBに改名された様です。全然知りませんでした。
この基板は、ファーム次第で、USB-IOとしても動作します。
写真の基板には、回路図に載っていない部品も実装されていますが、今回は使用しない部品ですので、回路図通りで問題無く動作します。
スイッチの仕様がわからない・・・
秋月から購入した無接点プッシュスイッチを配線しようとしたのですが、スイッチから3本のリード線が出ており、それぞれの機能が全く仕様書に載っていないのです。
仕様書を見る限り、1本はオープンコレクタ出力で、残りの2本が電源の様ですが、どれが電源なのか全く記載されていません。
仕方がないので、1個を分解して内部の構造からリード線の機能を探り当てました。(内部はボタンが押されると、フォトインタラプタが遮光される仕組みになっていました。この構造なら耐久性は高いと思われます)
結果として、ピンクがVCC、黒がGND、白が出力でした。
良く考えればわかりますが、赤が+で黒が-というのは、ごくありふれた設計です。
仕様がわかってしまえば、こっちのもので、アッという間にスイッチの電源の配線と信号線の配線を終えました。
すずメッキ線でGNDとVCCを結んで、ついでに電源ランプ用のLEDを接続しました。
GND、VCC、信号線のハーネスを作成して、上蓋の完成です。
ケースは秋月のポリカーボネートケースを使用しました。
アクリルだと、直ぐに割れてしまいますが、ポリカーボネートは粘りが有り、多少無理をしても割れる事はありません。
最近は、アクリルケースよりもポリカーボネートケースを使用する事が多いです。
くどい様ですが、このスイッチの出力はオープンコレクタです。
マイコンに入力する際にはポートをプルアップする必要があります。
本製作物では、AVRの機能を使用してAVR側でプルアップしてあります。
同じスイッチを使用していて、マイコンから読めないという人を他の掲示板で見かけましたので一応追記しておきました。(2011/04/10 追記)
ケースに入れてみました・・・
非常にシンプルな構成にしました。
本格的な、「パチスロ」コントローラーにするのであれば、レバーやBETボタン等を接続すれば可能ですが、サイズが大きくなるので、最小限の機能のみに絞りました。
SETボタンは、MAXBETボタンとレバーON、各リール停止の一連の動作をセットで行うボタンです。
1・2・3のボタンは各リールを止める為のボタンです。(逆押し用です)
ケースの内側から艶消しの黒のラッカーで塗装してみました。
結構綺麗にみえます。
単純なケース加工ですが、加工に2時間も費やしてしまいました。
ファームウエアの作成
V-USBのサイトにある、リファレンスプロジェクトの「HIDKeys - An Example USB HID」を参考にしました。
このプロジェクトの最終更新は2007年で終わっていますので、現在のV-USBではコンパイルできないかもしれません。
オリジナルでは、mega8を使用して17個までのキー入力に対応していますが、今回はtiny2313で動作させる為、最大13個のキー入力まで対応します。今回使用するキー数は4つです。
なお、オリジナルのソースをそのまま使用すると、USBに接続した直後の最初のキー入力が認識されないバグがあります。
今回はバグ対策も行っております。
実際に割当てたキーは、「SET」にスペースキー
「1」にカーソルキー ←
「2」にカーソルキー ↓
「3」にカーソルキー → を割り当てました。
ソース内のテーブルを変更してビルドすることで、自由にキーを設定することができます。
なお、tiny2313のメモリ容量が厳しい為に、使用するコンパイラのバージョンによっては、フラッシュに入りきれないかもしれません。
ちなみに、今回のコンパイル環境は、WinAVR-20100110
AVR Studio 4.18 build 715
vusb-20100715 です。
この環境でコンパイルすると、コードサイズは2012バイトになります。(残り36バイト!)
快適な操作です
WindowsXP以降のOSなら、USBコネクタに接続するだけで、自動でHIDキーボードとして認識されます。
早速、777TOWNのスロットゲームを立ち上げて操作してみたところ、快適に動作しました。
いつもは、電子工作を煙たがっていた妻が、今回だけは電子工作に感心していました。
この基板は、意外と用途がありそうなので、基板パターンを作成しても良いかもしれません。
欲張ってI/Oが沢山あるmega128版を作ってみるのも面白そうです。
それにしても、AVRのソフトウエア処理だけでUSB通信ができてしまうのは凄い事だと思います。
V-USBのソースを見ても何をしているのか、さっぱりわかりません・・・
AVRライタのHIDaspxも、こんな感じで高度な処理を行っているのでしょうね。
私もスキルを上げないと時代から取り残されそうです。
|