neo3016.log

好きなことをまとめた備忘録的なそれ。

Switchの外部コントローラーを自作したい。

f:id:neo3016:20211031230138j:plain

どうも、Arduinoを使ってSwitchの電車でGoを専用コントローラーでプレイしたいneoです。

 

今日は、Switchの外部コントローラーをArduinoで先っちょだけ作ったよって話。

実は、このネタは以前からあったけど正直忘れていた。また忘れそうだから、備忘録として記録しておく。

 

まずは、準備。

1,Arduino Leonardo(レオナルド)を用意しておく。

Atmega32U4が載っていればおk。Leonardoには、USB周辺機能に化けるHID機能が搭載されいるらしい。

https://www.amazon.co.jp/dp/B07NKSMPFK/ref=cm_sw_r_tw_dp_NNFKFYE9NZG6VC28YCTQ?_encoding=UTF8&psc=1

2,Arduino IDEをインストールしておく。

Arduino\hardware\arduino\avr\boards.txt のArduino LeonardoのVid,Pidとbuild.Vid,build.Pidを書き換える。

 pid,vidの値は、伏せておく。 ググれば出てくる。

f:id:neo3016:20211031231243p:plain

 

3,Arduino Leonardoに一応リセットボタンをつけておく。

 

f:id:neo3016:20211031230142j:plain

 GNDとRSTを繋げば良いらしい。から、直にトグルスイッチをつけてみた。

ちな、USB周辺機器に化けてしまうとPCにArduinoが認識されずにプログラムが書き込めない事態が発生する。

そこで登場するのが、このリセットボタン。リセットボタンをダブルクリックするとArduinoがPCに認識される。認識される時間は8秒しかないので注意。てか、ここら辺が癖が強い。 何回も書き込みに失敗した。 

f:id:neo3016:20211031232222p:plain

PCに認識されて、再度プログラムを書き込む直前。

 

4,Arduinoの動作を確認する。

Switchに接続しても良いのだが、gamepad testerで一旦動作を確認してみた。

gamepad-tester.com

 

f:id:neo3016:20211031232809p:plain

動作を確認した様子。 ボタンの挙動が見える。

 

5,Switchにホストケーブルで接続する。

f:id:neo3016:20211031230138j:plain

なんか、動いた。 全自動。

www.youtube.com

EX.外部ボタンを付けてみる。

f:id:neo3016:20211031230145j:plain

こんな感じで、適当にトグルスイッチをArduinoに生やしてみた。

確か、左側のボタンを押すとスティックが下に右側のボタンを押すとスティックが上に動く模様。

www.youtube.com

EX2.ソースコード

f:id:neo3016:20211031233915p:plain

ライブラリは、NintendoSwitchControlLibraryを使用した。

プルアップ抵抗は、1kΩぐらい。