はじめに
先日、某ゲーム機のヌンチャク型コントローラをリサイクルショップでお安く見つけました。
そこで今回は、Digisparkというマイコンボードを使用して、そのコントローラをUSBマウスとして使える※ようにしてみた、というお話です。
※:標準的なHIDクラスに準拠したデバイスとして扱う(=PCに接続して自動的に使用できる状態になる)ということを指します
やったこと
ハードウェアの準備
まずはヌンチャク型コントローラのケーブルを切断して4本の線を取り出します。
赤色:VCC
白色:GND
黄色:SCL
緑色:SDA
となっています。(下の写真参照)
そしてDigisparkと以下のように結線します。(下図参照)
赤色:VCC→5V
白色:GND→GND
黄色:SCL→P2
緑色:SDA→P0
VCCは3V推奨のようですが、5Vでも動作します。
ソフトウェアの準備
Arduinoを使用しました。
具体的なDigisparkの環境構築方法は、以下のWeb記事を参考にしました。
URL:
https://homemadegarbage.com/digispark-1
ソースコード
ソースコードは「こちら」に置きました。
ヌンチャク型コントローラとのI2C通信にはWire.hを使用しました。
そして、マウス動作にはDigispark専用のDigiMouse.hを使用しました。
コントローラのマウスへの割り当ては以下の通りです。
スティック:カーソル移動
Zボタン:右クリック
Cボタン:左クリック
注意事項としては、起動時にスティック位置の基準を決定する(その時の位置を基準とする)処理を行うため、それが終わるまではスティックを放しておく必要があります。
(LEDとかでそのタイミングがわかるようにすれば良いかもしれません)
終わりに
いかがでしたでしょうか。
ヌンチャク型コントローラはリサイクルショップで購入しやすいですし、Digisparkも1個400円くらいで購入できます。そして、Web上に多くの情報があり、さらにArduinoで100行くらいのコードで実現できるため、非常に取り組みやすい内容でした。(調査に多少の時間は要しましたが)
同コントローラを使用した今後の展開としては、内蔵されている加速度センサ※をマウスカーソルの移動に使用しても良さそうです。
※参考記事
→ヌンチャクから受信するデータの構成がわかります(「ヌンチャク」の項目参照)
そして、ヌンチャク型コントローラのみならず、同メーカーの他のコントローラも情報がたくさんあるため、それらを使ってみても面白そうなことができそうでした。(SFCのコントローラはSPIっぽいです)
最後に、実は自分で作らなくても以下のような部品を購入することで同じようなことができますので、参考までにリンクを張っておきます。
リンク①:ゲームパッドコンバータ
リンク②:ヌンチャクアダプタ基板
見ていただいてありがとうございました。
тнайк чoμ_〆(・ω・。)
参考記事
HomeMadeGarbage(小型マイコン Digispark の設定方法)
https://homemadegarbage.com/digispark-1
猫にコ・ン・バ・ン・ワ(Wiiヌンチャクの動作確認しました)
http://nuneno.cocolog-nifty.com/blog/2015/05/wii-088b.html
しぐれぎゃらりー(ヌンチャク型マウス)
http://mashigure.blog.jp/archives/21385105.html