In dieser Anleitung wird beschrieben, wie wir einen Arduino Leonardo Pro Micro so programmieren, dass er als Gamepad vom System erkannt wird. Diese Methode sollte bevorzugt gewählt werden, wenn es zu Problemen bei der Implementierung der Steuerung in diversen Emulatoren kommt.
Hier könnt ihr den Arduino Pro Micro erwerben
Als Basis-Einstellungen in der Arduino IDE Software bitte die Werte von dem Vorgängertutorial übernehmen.
Die Kurzfassung:
Tools => Port auswählen bei dem Arduino/Genuino Micro (o.ä) in Klammer aufscheint
Tools => Board => Arduino/Genuino Micro (welches im Vorherigen Schritt in Klammer angezeigt wurde) wählen
Tools => Programmer => AVRISP MKII wählen
Und ganz wichtig, die „Gamepad-Library“ installieren
Diese könnt ihr hier downloaden => ArduinoGamepad-master
Danach entpackt ihr die ZIP in das Library Verzeichnis der Arduino IDE Software, welches sich Standardmäßig unter C:\Users\BENUTZERNAME\Documents\Arduino\libraries befindet
Eine genaue Anleitung findet ihr auch hier
Der folgende Code muss dann nur noch kompiliert und auf den Leonardo Pro Micro geladen werden
// Arduino Pro Micro Config for Gamepad by www.zeroboy.eu - p!
#include <Gamepad.h>
Gamepad gb;
// Use PIN Number connected to PCB
#define BTN_DOWN 9
#define BTN_UP 15
#define BTN_LEFT 14
#define BTN_RIGHT 8
#define BTN_A 2
#define BTN_START 6
#define BTN_Y 4
#define BTN_L1 1
#define BTN_X 5
#define BTN_R1 10
#define BT
#define BTN_B 3
#define BTN_SELECT 7
#define BTN_L2 0
#define BTN_R2 16
void setup() {
Serial.begin(9600);
for (int x = 0; x < 19; x++) {
pinMode(x, INPUT_PULLUP);
}
}
void loop() {
bool downSet = digitalRead(BTN_DOWN);
bool upSet = digitalRead(BTN_UP);
bool leftSet = digitalRead(BTN_LEFT);
bool rightSet = digitalRead(BTN_RIGHT);
gb.setLeftYaxis(!upSet ? -127 : !downSet ? 127 : 0);
gb.setLeftXaxis(!leftSet ? -127 : !rightSet ? 127 : 0);
gb.setButtonState(0, !digitalRead(BTN_A));
gb.setButtonState(1, !digitalRead(BTN_B));
gb.setButtonState(2, !digitalRead(BTN_Y));
gb.setButtonState(3, !digitalRead(BTN_X));
gb.setButtonState(4, !digitalRead(BTN_SELECT));
gb.setButtonState(5, !digitalRead(BTN_START));
gb.setButtonState(6, !digitalRead(BTN_L1));
gb.setButtonState(7, !digitalRead(BTN_R1));
gb.setButtonState(8, !digitalRead(BTN_L2));
gb.setButtonState(9, !digitalRead(BTN_R2));
gb.sendUpdate();
}
Wenn ihr das PCB Controller Board mit dem Leonardo mit dem obigen Code unangepasst verwenden wollt, beachtet folgende Verkabelung:
Funktion | PIN |
A | 2 |
B | 3 |
Y | 4 |
X | 5 |
Start | 6 |
Select | 7 |
Rechts | 8 |
Unten | 9 |
Oben | 15 |
Links | 14 |
L1 | 1 |
R1 | 10 |
L2 | 0 |
R2 | 16 |
und ein belieber Masse/GND Pin vom Leonardo zum GND des Controller PCBs 😉