SSブログ

Switch版電車でGOコントローラをArduino Unoにつなぐ [電子工作]

電機屋の毎日のブログでDSair2 電車でGO!!マスコンへの対応で公開されていますが、当方では、ArduinoのUSBホストシールドを使ってデータ拾ってみました。参考までにみてください。

zuki01.jpg

USBホストのシールドはアマゾンで買いました。 USBホストシールド 2.0 for Arduino (compatible with Google Android ADK)
このUSB用のチップMAX3421も品薄なんですよね・・・
usbhost.jpg
いろんなサイトにいろんなこと書いてあるけどUnoで使うなら、特に基板に何もしなくてもそのままで使えます。

WindowsPCのUSB端子に差すと
VID 0x0F0D, PID 0x00C1, Pname Microsoft PC ジョイスティック ドライバー
NumAxes 4, MaxAxes 6, NumButtons 14, MaxButtons 32, Caps HASZ HASR HASPOV POV4DIR, PeriodMin 10, PeriodMax 1000
Xmin 0, Xmax 65535, Ymin 0, Ymax 65535, Zmin 0, Zmax 65535, Rmin 0, Rmax 65535, Umin 0, Umax 65535, Vmin 0, Vmax 65535
RegKey DINPUT.DLL
OEMVxD
と認識しているようにでベンダ(0x0F0D)はZUKIでなくHORIみたいです。(よくわからんけど)

最初、Switchのジョイコンでとれるかなと思ったのですが、VID,PID変えてもジョイコンでは認識していなくて(めんどくさそうなので)、スケッチのサンプルをジョイスティックにしたら読めました。特に面倒なことしていなさそうなので汎用のジョイステックで問題ないと思います。

ArduinoのライブラリーはUSB_Host_Shield_2.0
このライブラリのexamples\HIDの中にあるUSBHIDJoystickのスケッチで見れます。
sketch.jpg

何もせずにUnoへスケッチを書き込み、マスコンをUSBシールドのUSB端子に差すと
シリアルモニタに結果が返ってきます。

Debug.jpg

あまり、小難しくないので、いろんなものに応用できると思います。

一応シリアルモニタにかえって来た値をメモしておきます。
マスコン(Rzの値が変化します)
EB X1: 40 Y1: 00 X2: 0F Y2: 80 Rz: 00
B8 X1: 00 Y1: 00 X2: 0F Y2: 80 Rz: 05
B7 X1: 00 Y1: 00 X2: 0F Y2: 80 Rz: 13
B6 X1: 00 Y1: 00 X2: 0F Y2: 80 Rz: 20
B5 X1: 00 Y1: 00 X2: 0F Y2: 80 Rz: 2E
B4 X1: 00 Y1: 00 X2: 0F Y2: 80 Rz: 3C
B3 X1: 00 Y1: 00 X2: 0F Y2: 80 Rz: 49
B2 X1: 00 Y1: 00 X2: 0F Y2: 80 Rz: 57
B1 X1: 00 Y1: 00 X2: 0F Y2: 80 Rz: 65
N X1: 00 Y1: 00 X2: 0F Y2: 80 Rz: 80
P1 X1: 00 Y1: 00 X2: 0F Y2: 80 Rz: 9F
P2 X1: 00 Y1: 00 X2: 0F Y2: 80 Rz: B7
P3 X1: 00 Y1: 00 X2: 0F Y2: 80 Rz: CE
P4 X1: 00 Y1: 00 X2: 0F Y2: 80 Rz: E6
P5 X1: 00 Y1: 00 X2: 0F Y2: 80 Rz: FF

ボタン(押している間だけ値が設定される。 離すともとに戻る)
A X1: 04 →00
B X1: 02 →00
X X1: 08 →00
Y X1: 01 →00

→ X2: 02 →0F
↑ X2: 00 →0F
← X2: 06 →0F
↓ X2: 04 →0F

● Y1: 20 →00
Home Y1: 10 →00

R X1: 20 →00
+ Y1: 02 →00
- Y1: 01 →00
L X1: 10 →00
ZR X1: 80 →00
ZL X1: 40 →00

nice!(0)  コメント(2) 
共通テーマ:趣味・カルチャー

nice! 0

コメント 2

ゆうえん・こうじ

このUSBホストシールドとDesktopStationさんのDSシールドをUNOに2段重ねてスケッチ書くと単体でDCCコントローラーになるのでしょうか?それともピン設定が重複するので、無理でしょうか?
by ゆうえん・こうじ (2021-08-15 12:58) 

ラスカル

すみません
コメントいただいていることに気づきませんでした。

DesktopStationさんのDSシールドとUSBホストシールドはピンが競合するのでそのまま重ねられません。
なので将来的にはUSBマスコン基板とI2Cで接続してコントローラにできないか検討しています。

by ラスカル (2021-10-26 22:06) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。