Leonardo Pro Micro (ATmega32U4) als Gamepad

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.


zeroboy_gamepad
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:

leonardo_pins

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 😉

This site uses cookies to offer you a better browsing experience. By browsing this website, you agree to our use of cookies.