Arduinoを使用して自分だけのジョイスティックを作成する。
何番煎じかはわからないが,自分なりにまとめる
環境
- Arduino Pro micro
- Mac版 Arduino IDE 1.8.9
1.Arduino Pro micro について
今回使用するArduino Pro microはATmega32u4チップを搭載したもので、USB deviceとして使うこともできるArduinoである。
ATmega32u4チップを搭載したArduinoには他にもArduino Leonald , Arduino Microがある。
今回はArduino Pro microを使用する
価格は秋月電子で3000円ほど。互換機など安い物も多く存在している
Arduino Pro micro | Arduino Leonald | Arduino Micro |
---|---|---|
https://www.switch-science.com/products/3914 | https://akizukidenshi.com/catalog/g/gM-07384/ | https://akizukidenshi.com/catalog/g/gM-08286/ |
2.ArduinoIDEの下準備
Joystickのライブラリを入れる
下記のGitからzip ファイルをDLしてArduinoIDEに読み込ませる
3.配線
使用する部品
スイッチ | |
---|---|
ボリューム |
回路図
部品とArduino Pro microをつなぐ
スイッチをD7
アナログをA0に接続
4.ジョイスティックとして認識させる
コードの実装
ライブラリの追加とピンの定義
#include <Joystick.h>
#define SW_PIN 7
#define ANALOG_PIN_1 A0
Joystickの有効無効を切り替える構造体
今回はスイッチ1個 ボリューム1個なので
Joystick_ Joystick(//有効無効を切り替える
0x03, //hid report id
JOYSTICK_TYPE_GAMEPAD, //joystick type
1, //button count <- 使用するスイッチの数
0, //Hsw 0-2
true, //x <- ボリュームを使用するためここをtrue
false, //y
false, //z
false, //rx
false, //ry
false, //rz
false, //rudder
false, //throttle
false, //accelerator
false, //brake
false//steeing;
);
setup内ではGPIOピンとJoystickライブラリの初期設定
GPIOスイッチはプルアップさせる
void setup() {
pinMode(SW_PIN, INPUT_PULLUP); //ピンの設定
pinMode(A0, INPUT); //ピンの設定
Joystick.begin();//Joystickライブラリを使用するため必須
Joystick.setXAxisRange(0,1023);//あたいの入れる範囲を設定。
}
loop関数内では、analogRead,digitalReadで読み取った値をJoystickにセットする
void loop() {
Joystick.setXAxis(analogRead(ANALOG_PIN_1)); //ボリュームの値を読み取りセット
Joystick.setButton(0, digitalRead(SW_PIN)); //スイッチの値を読み取りセット
}
Windowsで認識するか確認
Arduino に書き込んでWindowsにさしJoystickとして認識することを確認する
コントロール パネル\ハードウェアとサウンド\デバイスとプリンターからArduino Leonald名のデバイスを確認
ゲームコントローラの設定
ボリュームを回すとx軸の+が左右に動作する
スイッチを押すとボタン1が点灯するのを確認できる
5.まとめ
1個のボリュームとスイッチをJoystickとしてPCに取り込むことができた。
複数増やすことにより多くの操作をシミュレータに取り込むことができるだろう
参考サイト
Arduino を複数使用する場合フライトシミュレータから見ると同じデバイスが複数あるように見えるため、設定が変更される可能性がある
名前の変更やIDを変更して対応すると設定が変わることが減る。
https://kohacraft.com/archives/1072655339.html