WEBで調べてみたところ Arduino用として多数のライブラリが公開されており、さすがは
SONYプレイステーションといった感じです。
今回ターゲットにしたHORI製 「FIGHTING COMMANDER10B」は初代プレステ用のデジタル
パッド(アナログスティックや振動は非対応)なので、シンプルな下記のライブラリを
使うことにしました。
(1)Arduino PSX Library
パッド情報読出しは付属のサンプルスケッチを流用させていただいています。
このライブラリをインクルードしてサンプル通りにスケッチをコンパイルするだけで
PSパッド情報が(たった1行の記述で!)読み出せるようになり、非常に便利でした。
(2)SONY PLAYSTATION CONTROLLER INFORMATION
配線図や読出しシーケンス等の技術情報は、ここを参考にしました。
○端子ピン情報
〇追加で購入したもの
・抵抗器4.7KΩ
・DC-DCコンバーター
5V→3.3V供給用にProMicro互換品と共にaitendoで購入しました。
下記のもう少し安いものでも大丈夫と思います。
・LDOモジュール(3.3V)
・配線用の線材少々
○配線図
Arduino PSX Libraryの結線を参考にしています。
プレステ用コネクタは昔DPP作成時に入手したコントローラー用の延長コードを流用しています。
ハードオフ等でジャンク品のマルチタップが売ってたりするので流用するのもありです。
PS端子・スのDATA信号は4.7KΩの抵抗器でプルアップしています。PS端子・ス3.3V入力は、16MHz/5V版の
Pro Micro(互換品)を利用したためDC-DCコンバータを利用して3.3Vを得ています。
正直なところ、旧PS1パッドは5Vでも動作する場合がほとんどで実際に自作DPPでは5V直結で動かした
実績もあったのですが、パッドによっては故障する恐れがあるため、念のためDC-DCコンバータを
使うようにしています。
DC-DCコンバータを省くなら、8MHz/3.3V版のPro Microを利用するのが吉です。
ライブラリを利用しているのでスケッチはかなりシンプルです。
キー判定はあまり考えずに処理を並べただけですが、それなりに動いているようです(少々怪しいかも)
Arduino PSX Libraryを利用しますので、あらかじめインストールしておいてください。
リンク先の「Installation Instructions」から、「master.zip」を選択して、zipファイルをダウンロードします。
次にArduino IDEから「スケッチ」→「ライブラリをインクルード」→「.ZIP形式のライブラリをインストール...」を選択。
ファイルメニューが開くので先ほどダウンロードしたZIPファイルを指定してインストールを実施します。
スケッチファイルの利用はこちらからどうぞ)
VID/PIDについては(1)と(2)をコンパイルスイッチ「__IF_SEGA」で切り替えられるようにしています。
VID/PIDの変更に合わせて、コンパイルスイッチ「__IF_SEGA」を適切に設定してください。
元のVID/PID | (1)SEGA純正パッドを模擬する場合 | (2)DragonRise製パッドを模擬する場合 |
---|---|---|
leonardo.build.vid=0x2341 | leonardo.build.vid=0x0CA3 | leonardo.build.vid=0x0079 |
leonardo.build.pid=0x8036 | leonardo.build.pid=0x0024 | leonardo.build.pid=0x0011 |
こんな感じで組んでみました。(クリックで拡大)
メガドライブ用のコントローラーと併用できるよう、先ほどの配線に追加で組んでます。
PSコントローラ用コネクタは、DPP用に使っていたPS延長ケーブルをばらして流用。
DATA信号は4.7kΩでプルアップ(2KΩ~5KΩくらいならOK)しています。
前述のとおりVCC(+5V)についてはメガドライブパッド駆動に必要なため、 PS用には
DC-DCコンバータで+3.3Vに降圧して供給しています。
とにかく手に馴染んだHORI製「FIGHTING COMMANDER10B」がメガドライブミニで
使えるようになり嬉しい限りです。
この勢いでPCエンジンコントローラも対応してしまいましょう。
PCエンジン用パッドをメガドライブミニに接続(2020/4/28 - 4/30)