レトロでハードな物語

レトロなゲーム機・マイコン・中古デバイスなどをArduinoやAVRで再活用する方法を模索しています。

NINTENDO64コントローラーをUSBジョイスティックに

2018年08月12日 | 電子工作

Arduinoを使って割と手軽にファミコンジョイスティックをUSBジョイスティックにできたので、調子に乗って別のゲームコントローラーもUSBジョイスティックに変換したくなりました。

早速ハードオフでこれを購入。

NINTENDO64のコントローラーです。NINTENDO64本体は持っていなかったのでちょっと興味があったのと、前回利用したGitHubにNINTENDO64コントローラーのスケッチもあったので試してみたくなりました。

このコントローラーのコネクタは特殊な形状で、今後流用することもないと思い迷わず破壊。取り出した信号線は3本、調べるとVcc, GND,DATAとなっています。これを上記のGitHubから入手したRetroJoystickAdapter_N64.inoに記述されているArduino Leonardoのピンに接続します。

Vcc→ 3.3V
GND→GND
DATA→4番ピン

NINTENDO64コントローラーは3.3V動作なので5Vにはつなぎません。
次にRetroJoystickAdapter_N64.inoをコンパイルするのですが、これもそのままではエラーでコンパイルできません。スケッチに以下の記述を追加してください。(ちなみに前回も使用したArduinoJoystickLibraryがインストールされている必要があります。)

#include "Joystick.h"の下に以下を追加。

Joystick_ Joystick =
   Joystick_(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_JOYSTICK,
   10, 1,
   true, true, false,
   false, false, false,
   false, false,
   false, false, false);

Joystick.begin(false);の下に以下を追加。

Joystick.setXAxisRange(-64, 64);
Joystick.setYAxisRange(-64, 64);

この64という数値は、アナログスティックの感度に影響するのでお好みで調整してください。あまり大きな数値にすると感度が悪くなります。

以上の変更でコンパイルできるようになります。

動作確認がとれたらファミコンジョイスティックのときのように、Arduino Pro Microに移行します。NINTENDO64コントローラーは動作電圧が3.3Vなので前回使用した5V動作のHiLetgoの互換機は使用できません。そこで今回はKEYESTUDIOの3.3V8MHz動作のPro Micro互換機を購入しました。これもAmazonで¥1,100ほどでした。

この互換機、Arduino IDEのプロセッサの設定で"ATmega32U4(3.3V,8MHz)"を選び、コンパイルしてボードに書き込んでもUSBデバイスになってくれませんでした。何度もスケッチや配線を見直したり、リセットするなど色々試してみましたが動作しません。もう初期不良とあきらめ、ダメもとで試しに"ATmega32U4(5V,16MHz)"を選んで書き込んでみたら、なんと正しく動作しました。どういうことなんでしょうか?
ここでしばらく無駄な時間を費やしてしまいました。


問題が解決したので早速、基盤に半田付けしてraspberry pi 3のRetroPieで動作を確認。

問題なく動作しました。ちなみにPro Microの脇にあるタクトスイッチはリセットボタンです。念の為につけておきました。



最新の画像もっと見る

コメントを投稿