In diesem Tutorial wollen wir uns genauer ansehen, wie man etwas Kabelsalat zur Zero GPIO vermeidet und einen Mikrocontroller für die Eingabe der Steuerung verwendet. Wir beschäftigen uns mit der Programmierung als Keyboard (HID-Interface)
Neben den freien Ports am Zero ist ein weiterer Vorteil, dass dieser Mikrocontroller nur einmalig konfiguriert werden muss und dann wie ein angeschlossenes Keyboard arbeitet. Sprich: Wechselt man die Distribution, müssen keine Konfigurationen wie bei der GPIO Lösung getätigt und ein Script welches die Eingaben überwacht installiert werden. Alles wird „out-of-the-box“ als Tastatur erkannt und kann sofort genutzt werden.
Es muss außerdem nicht immer die teure/schlecht verfügbare Teensy-LC Version von Adafruit sein, denn dieser basiert ebenfalls auf dem open-source Layout des Arduino Leonardo Pro Micro mit ATmega32U4 Chip, dem wir uns jetzt widmen werden.
Hier könnt ihr den Arduino Pro Micro erwerben
Zu aller erst installiere die Arduino IDE. Schließe erst dann den Microcontroller über UBS an den PC an (Wichtig: Denn es werden vorher mit der Software die benötigten Treiber installiert). Falls nach dem Starten Windows den angeschlossenen Controller nicht erkennt (gelbes Icon – unbekannte Hardware), kannst du den Treiber auch separat hier downloaden und installieren.
Zum Verständnis hier noch einmal die PIN Bezeichnung. Wir verwenden den ground pin, zusammen mit den Arduino Pins (türkise Farbe im Diagramm unten) 2-10 und 16 (für A B X Y oben unten links rechts start select) sowie 14 und 15 für die L+R Trigger Buttons.
Starte die Arduino Software, und kopiere folgenden Code in das große Textfeld
#include <Keyboard.h>
#define abutton 2
#define bbutton 3
#define ybutton 4
#define xbutton 5
#define startbutton 6
#define selectbutton 7
#define rightbutton 8
#define downbutton 9
#define upbutton 10
#define leftbutton 16
#define ltbutton 14
#define rtbutton 15
void setup() {
pinMode(abutton,INPUT_PULLUP);pinMode(bbutton,INPUT_PULLUP);pinMode(ybutton,INPUT_PULLUP);pinMode(xbutton,INPUT_PULLUP);
pinMode(startbutton,INPUT_PULLUP);pinMode(selectbutton,INPUT_PULLUP);
pinMode(rightbutton,INPUT_PULLUP);pinMode(downbutton,INPUT_PULLUP);pinMode(upbutton,INPUT_PULLUP);pinMode(leftbutton,INPUT_PULLUP);
pinMode(ltbutton,INPUT_PULLUP);pinMode(rtbutton,INPUT_PULLUP);
Serial.begin(9600);
Keyboard.begin();
}
void loop() {
if (!digitalRead(abutton)){Keyboard.press('p');}else{Keyboard.release('p');}
if (!digitalRead(bbutton)){Keyboard.press('l');}else{Keyboard.release('l');}
if (!digitalRead(ybutton)){Keyboard.press('k');}else{Keyboard.release('k');}
if (!digitalRead(xbutton)){Keyboard.press('o');}else{Keyboard.release('o');}
if (!digitalRead(startbutton)){Keyboard.press('x');}else{Keyboard.release('x');}
if (!digitalRead(selectbutton)){Keyboard.press('y');}else{Keyboard.release('y');}
if (!digitalRead(rightbutton)){Keyboard.press('d');}else{Keyboard.release('d');}
if (!digitalRead(downbutton)){Keyboard.press('s');}else{Keyboard.release('s');}
if (!digitalRead(upbutton)){Keyboard.press('w');}else{Keyboard.release('w');}
if (!digitalRead(leftbutton)){Keyboard.press('a');}else{Keyboard.release('a');}
if (!digitalRead(ltbutton)){Keyboard.press('q');}else{Keyboard.release('q');}
if (!digitalRead(rtbutton)){Keyboard.press('e');}else{Keyboard.release('e');}
}
Gehe daraufhin auf Tools und wähle folgende Optionen aus
Bei Board „Arduino Leonardo“
Bei Port wähle den Port aus, bei dem „(Arduino Leonardo) aufgeführt wird, in diesem Fall COM20 (kann variieren!)
Erscheint bei dir der Microcontroller nicht, starte die Arduino Software neu oder überprüfe ob der Treiber richtig installiert wurde.
Bei Programmer wähle „Arduino as ISP“
Gehe dann auf „Sketch“, „Verify/Compile“. Kommen keinerlei Fehlermeldungen, könnt ihr mit mit Sketch => Upload das ganze auf den Microcontroller laden welchen ihr über USB angeschlossen habt und sich nach dem programmieren neu startet.
Wenn du nun Buttons an den Microcontroller anschließt, müsste sich dieser wie eine Tastatur verhalten und beim betätigen Buchstaben wie p l k o usw. ausspucken.
Das wars! 🙂
Willst du den einfachen und schnellen Weg gehen, kannst du natürlich auch im Shop einen fix-fertigen programmierten und verkabelten Microcontroller mit PCB Board erwerben