前回でレトロアーケードの改造が終わったので、次は引き出したコントローラー端子にジョイスティックをつないでみます。ファミコンゲームを遊ぶので、ジョイスティックもファミコンのものをつなげてみましょう。
レトロアーケードのコントローラー端子は5Vにプルアップ(多分)されていて、これをGNDに短絡することでボタンが押されたことを検出しています。なのでArduinoやAVR、PICなどで制御するのは簡単そうです。
今回はまだ沢山残っているPICの中からPIC16F648Aを使ってみることにしました。単純なデジタル入出力しか使わないので、他のPICやAVRなどでも簡単に実現できると思います。
引き出したコントローラーの端子とGNDの間に流れる電流を計測してみると0.1mAほどでした。PIC16F648Aのピンに流せる最大電流は20mAなので、PICのピンに直結しても問題なさそうです。
配線は簡単です。
ファミコンジョイスティックの端子は以下のようにPICにつなぎました。
ジョイスティック←→PIC
2 DATA − RA4
3 LATCH − RA3
4 CLOCK − RA2
6 VCC − VDD
8 GND − VSS
レトロアーケードのコントローラー端子は以下のようにつなぎました。
レトロアーケード←→PIC
UP − RB0
RIGHT − RB1
LEFT − RB2
DOWN − RB3
RESET − RB4
START − RB5
A − RB6
B − RB7
GND − VSS
VCC − VDD
PICのプログラムはこちらです。
newmain.c
さっそくジョイスティックをつなげたPICとレトロアーケードを接続してみると、レトロアーケードの電源ボタンを押していないのに通電してゲームが起動してしまいました。5V電源を引き出した端子がよくなかったようで、電源スイッチと関係なく常に5Vが出力されていました。
PICをつなげたまま電源スイッチをオンオフさせていると動作が不安定になることがありましたが、電源ボタンをオンのままにして給電すれば問題なく動作するようです。配線し直すのも面倒なのでこのまま使うことにしました。動作確認は5V2AのACアダプターで行っていて、電池を使っての確認はしていません。
肝心のコントローラーの方はちゃんと動作します。やっぱりレトロアーケード本体のコントローラーよりも遊びやすいですね。
ABボタンが使えるようになり、「ローリングサンダー」のキャラクターをジャンプさせることが出来るようになりました。
また、昔ハードオフで購入したファミコン互換機のコントローラーでも、きちんと動作するのを確認しました。こちらは連射機能があるので「ギャラガ」で遊ぶときにとっても便利です。
動作に問題なさそうだったので、最後にPIC等を基板にハンダ付けします。PICの電源ピンには0.1μFのパスコンをMCLRピンには10kΩのプルアップ抵抗が付けてあります。(念の為)
レトロアーケードは5V動作なのですが、電圧を3.3Vにレベル変換すればPlaystationとかヌンチャクコントローラーとか自分の好きなコントローラーをつなげて遊ぶことが出来ますね。
おまけ
昔ハードオフで購入したファミコン互換機ファミレーターのパッドです。
使いやすくてPCやゲーム機につないで利用していたのですが、いつの間にか壊れて使えなくなっていました。このまま捨ててしまうのはもったいないので、ボタンの配線を基板から引き出してレトロアーケードにつなげてみました。
単純なスイッチのオンオフだけのデバイスになっているので、上記のような電源問題もなくきちんと動作します。ただし、連射機能は無くなっていますし、接続先もないので連射ボタンはただの飾りです。
最新の画像[もっと見る]
- M5Core2+ArduinoフレームワークでもLVGLを使う 2日前
- M5Core2+ArduinoフレームワークでもLVGLを使う 2日前
- M5Core2+ArduinoフレームワークでもLVGLを使う 2日前
- M5Core2+ArduinoフレームワークでもLVGLを使う 2日前
- M5Core2+ArduinoフレームワークでもLVGLを使う 2日前
- M5Core2+ArduinoフレームワークでもLVGLを使う 2日前
- M5Core2+ArduinoフレームワークでもLVGLを使う 2日前
- ラスベリーパイのベアメタル環境でLVGLを使う 1週間前
- ラスベリーパイのベアメタル環境でLVGLを使う 1週間前
- ラスベリーパイのベアメタル環境でLVGLを使う 1週間前
※コメント投稿者のブログIDはブログ作成者のみに通知されます