どうも、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
Arduino\hardware\arduino\avr\boards.txt のArduino LeonardoのVid,Pidとbuild.Vid,build.Pidを書き換える。
pid,vidの値は、伏せておく。 ググれば出てくる。
3,Arduino Leonardoに一応リセットボタンをつけておく。
GNDとRSTを繋げば良いらしい。から、直にトグルスイッチをつけてみた。
ちな、USB周辺機器に化けてしまうとPCにArduinoが認識されずにプログラムが書き込めない事態が発生する。
そこで登場するのが、このリセットボタン。リセットボタンをダブルクリックするとArduinoがPCに認識される。認識される時間は8秒しかないので注意。てか、ここら辺が癖が強い。 何回も書き込みに失敗した。
PCに認識されて、再度プログラムを書き込む直前。
4,Arduinoの動作を確認する。
Switchに接続しても良いのだが、gamepad testerで一旦動作を確認してみた。
動作を確認した様子。 ボタンの挙動が見える。
5,Switchにホストケーブルで接続する。
なんか、動いた。 全自動。
EX.外部ボタンを付けてみる。
こんな感じで、適当にトグルスイッチをArduinoに生やしてみた。
確か、左側のボタンを押すとスティックが下に右側のボタンを押すとスティックが上に動く模様。
EX2.ソースコード
ライブラリは、NintendoSwitchControlLibraryを使用した。
プルアップ抵抗は、1kΩぐらい。