ArduinoJoystickLibraryを使う
はじめに
簡単な工作したいなと思ったのでアケコンを作ってみた時に使ったArduinoJoystickLibraryの使い方のメモ
作ったの自体は機会があればまた別に記事書きます
必要なもの
- ATmega32U4を搭載したArduino
今回はPro Microの互換品を使います
環境構築
からcloneしてJoystickディレクトリをArduino IDEのインストールディレクトリにあるlibrariesに配置します
スケッチ
あとはコード書くだけです
サンプルは公式にあるので実際に使ったスケッチを載せておきます
デフォルトだといろいろ有効になっているので不要なものは適宜コンストラクタでfalseにして無効にしておきます
これだけのコードでゲームパッドとして認識されるので便利な世の中ですね
1#include <Joystick.h>
2
3Joystick_ Joystick = Joystick_(
4 0x03, // reportid
5 JOYSTICK_TYPE_GAMEPAD, // type
6 3, // button count
7 0, // hat switch count
8 true, // x axis enable
9 true, // y axis enable
10 false, // z axis enable
11 false, // right x axis enable
12 false, // right y axis enable
13 false, // right z axis enable
14 false, // rudder enable
15 false, // throttle enable
16 false, // accelerator enable
17 false, // brake enable
18 false // steering enable
19 );
20
21void setup(){
22 // Joystick
23 pinMode(2, INPUT_PULLUP);
24 pinMode(3, INPUT_PULLUP);
25 pinMode(4, INPUT_PULLUP);
26 pinMode(5, INPUT_PULLUP);
27
28 // Switch
29 pinMode(6, INPUT_PULLUP);
30 pinMode(7, INPUT_PULLUP);
31 pinMode(8, INPUT_PULLUP);
32
33 // Joystick lib init
34 Joystick.begin();
35 Joystick.setXAxisRange(0, 2);
36 Joystick.setYAxisRange(0, 2);
37 Joystick.setXAxis(1);
38 Joystick.setYAxis(1);
39}
40
41void loop(){
42 int up = !digitalRead(2); // up
43 int down = !digitalRead(3); // down
44 int right = !digitalRead(4); // right
45 int left = !digitalRead(5); // left
46
47 if (up){
48 Joystick.setYAxis(0);
49 }else if(down){
50 Joystick.setYAxis(2);
51 }else{
52 Joystick.setYAxis(1);
53 }
54
55 if (left){
56 Joystick.setXAxis(0);
57 }else if(right){
58 Joystick.setXAxis(2);
59 }else{
60 Joystick.setXAxis(1);
61 }
62
63 Joystick.setButton(0, !digitalRead(6));
64 Joystick.setButton(1, !digitalRead(7));
65 Joystick.setButton(2, !digitalRead(8));
66}
こんな感じになる
ざっくりコード書いて動作確認した pic.twitter.com/vEkEW4KuOy
— スカイ (@skyblue3350) June 29, 2018