DIY Gaming Keypad, diverse Fragen von einem Anfänger

Hallo liebe Forumsmember, Admins und Mods !

Kurz zu mir: Heisse Sebastian, bin 43 Jahre alt, ITler und besitze definitiv ein Daniel Düsentrieb Chromosom. Ich hab eine Tischlerlehre angefangen und eine Umschulung zum Techn. Produkt Designer gemacht und interessiere mich für recht viele Dinge.
In dieses Forum bzw. zu Mikro Controllern bin ich über meinen 3D Drucker gekommen und habe mir bereits erfolgreich einen DEEJ Audio Controller zusammen gelötet und einen Arduino Pro Micro Clone programmiert.

Als nächstes Projekt möchte ich mir ein DIY Gaming keypad realisieren, DIY deshalb weil ich Linkshänder bin und entsprechend mit Rechts die Tasten bedienen möchte. Früher in meiner hoch gaming Zeit kam ich mit den Pfeiltasten und drum herum zurecht mittlerweile werden die Spiele aber teilweise so komplex das ich die Tasten nicht mehr gut legen/aufteilen kann und WASD kann ich komplett vergessen, klappt nicht. und dann macht das auch keinen Spass zu spielen.

Das Teil will ich drucken.

Mein Plan ist dieses Teil, bzw. die Teile einfach über den Slicer zu spiegeln und es entsprechend anzupassen. Der Mensch hat aber einen Dual Shock 3 Controller zerlegt und verlötet und ich möchte das aber über einen Arduino Pro Micro 32u4 Clone realisieren.

Da gibts dann schon die 1. Frage realisiere ich das Teil als Keyboard + Joystick oder als XInput Xbox Pad. Ich würde gerne in Funktion schon ein Xbox Pad abbilden allerdings ohne den 2. Joystick, ohne analoge Schultertasten und Rumble brauch ich auch nicht.

Die Anforderung wären demnach 14-16 Buttons, ein Joystick und evtl. ein zusätzlicher rotary Encoder (aka 2. Mausrad mit Klick).

Ich habe mit Ach und Krach und teilweise einfach copy & Paste mir für meine DEEJ Box den Sketch zusammen gestümpert/geklaut und war stolz wie Oskar als das Ding funktionierte, wirklich gerafft habe ich aber so gut wie nichts.

Ich habe schon gesehen es gibt eine Xinput Library aber da muss ich noch lesen, ich habs nur gefunden bis jetzt.

Weitere Fragen wären:

Gibts es ein wirklich einfache Tool im besten Fall OpenSource/Offline Arduino Simulator wo man wirklich realistische Schaltung nachbauen kann und den Sketch aufbauen und testen ?

Gibt es ein Tutorial am besten für 3 jährige um wirklich mal die Basics systematisch durchzuarbeiten ? Wenn möglich auf Deutsch ?

Es gibt halt Tonnenweise Projekt Tutorials aber die sind halt zu oft zu Projektorientiert.

Ich möchte auf jedenfall bis ich mit dem Gaming Keypad anfange mir ein paar basics drauf schauffeln das ich halbwegs einen Sketch lesen/schreiben kann.

Könnt Ihr mir bitte helfen meine Fragezeichen zu beseitigen ?

Vorweg sei noch gesagt ich kann mich zeitlich leider noch nicht vollumfänglich mit dem Projekt befassen, ich arbeite, habe einen Hund, eine Partnerin, einen Garten und kann Möbel bauen, die to do Liste meiner Partnerin ist lang und wir alle wissen happy Wive, happy Live :laughing:
Deshalb kann sich das schon mit allen Richtung Jahresende bewegen, wenn das ein Problem ist kann man Thread auch gerne auf Eis legen/löschen, mir ist nur wichtig das ihr das wisst und nicht beleidigt seid wenn ich mal ein paar Wochen nicht antworte.

Ich bedanke mich & VG
Sebastian

Die Beispiele in der IDE, und hier und hier. Wenn weitere Fragen offen sind, ein aktuelles C++-Buch.

Gruß Tommy

Als Simulator fällt mir spontan wokwi ein.

Tutorial... hmm das kommt drauf an wie dir lernen am leichtesten fällt eher Video gucken oder eher lesen. Mir fällts ja am leichtesten wenn ichs per Video erfahren kann und als ich vor Jahren mit Arduino angefangen habe, habe ich auf Youtube mir eine Videoserie zum Thema angesehen ging ca 4 Stunden und hat mit den basics angefangen. Das hatte mir schon sehr geholfen. Mit der Basis bin ich dann die Beispiele in der IDE mal durchgegangen. Mein erstes Projekt damals war noch sehr viel copy und paste aber darauf hatte ich aufgebaut und meinen Horizont so nach und nach erweitert. Wenn interesse besteht suche ich dir das Videotutorial mal raus und verlinke es hier.

Guten Abend,
danke schon mal an euch.

@Tommy56
Ja klar die Beispiele in der IDE kenne ich ja aber ich hab das Gefühl ich muss auf die C++ Ebene runter und puh das wollte ich schon so lange wie geht vermeiden.
Aber ich habe einfach keine Ahnung von programmieren, aber schon Bock undankbare Mischung.
Aber werde ich mir anschauen. Danke!

@evil17
Ja ich lerne je nachdem worum es geht manchmal besser mit Videos und manchmal in Schrift.
Ich nehme auch ganz gerne noch Papier die ganze Zeit am Bildschirm zu lesen ist auch nicht so geil aber muss halt manchmal sein. Wenn es keine Umstände macht würde ich mir das Video Tutorial gerne mal reinschauen.

Ich werde jetzt erst mal die Teile spiegeln und drucken und schauen ob das so funktionieren kann.

Ich kenne eure Interessen natürlich nicht außer Arduino :smiley:
Aber ich würde jetzt gerne schon auch an dem Keypad Sketch anfangen und das dann versuchen zu ergänzen mit euren Vorschlägen und da bräuchte ich dann aber mal ne Einschätzung.

Original Arduino vs. 32u4 Clone ?
Mir waren die Originale damals zu teuer ohne zu wissen ob das klappt, aber mir scheint der hat mehr I/O als der clone und da kommt dann auch das nächste Fragezeichen soll ich den Sketch als Keyboard + Joystick anlegen oder besser über die XInput Library.
Ich weiß nicht ob ich hinkomme mit den I/O vor allen den Digitalen, und eine Keyboard Matrix zusammen löten funktioniert wahrscheinlich nicht mit dem XInput Sketch und ich brauche ja auch die Maus trotzdem.

Versteht ihr was ich meine ?
Xinput ist dann ein reiner Controller (an sich Gut) aber das ist ja kein klassischer Controller mehr und wird in Kombination mit der Maus benutzt werden und ich frage mich ob das Probleme geben wird. Ich spiele damit halt dann irgendwelche Shooter und ich kann mir vorstellen das es evtl. heißt Maus+Keyboard oder Controller

Schönes Wochenende !
Seba

Die Sprache von Arduino, auch die einfachen Beispiele ist C++.

Gruß Tommy

Hi,
das verstehe ich.
Nur ich wollte einfach nicht ganz so tief in die Sprache ein tauchen da mir dafür einfach die Zeit fehlt oder mein Projekt 3 Jahre dauert. Wenn es denn sein muss, tue ich das aber war in der (offensichtlich falschen) Annahme das es evtl. auch ohne so tiefes Wissen geht und ich einfach bei den Arduino Sketches bleiben kann + ein bisschen Schützenhilfe aus dem Forum.
Grundsätzlich ist der Wille da, nur ich weiß nicht wann ich noch C++ lernen soll.

Scheiß Zwickmühle...

Gruß
Seba

Doch, Du musst Dich mit den grundlegenden Dingen der Sprache befassen.
Manche Dinge funktionieren und kompilieren, bringen aber nicht das gewünschte Ergebnis. Und wenn Du nicht weisst, wie das richtig aussehen soll, wirst Du stundenlang nach etwas suchen, was Du nicht finden kannst.

Glaubst Du nicht?

m = map(m, 0, 1023, 0, 255);`

ist was anderes als

m = map(m, 0, 255, 0, 1023);`

Und ich spreche aus Erfahrung....

Das von Tommy erstgenannte ist ein pdf, das jeden Abend ein paar Seiten gelesen Dir einen Überblick verschafft und Du zumindest weisst wo Du nachschlagen kannst.
Wenn Du die Hälfte geschafft und die Befehlsübersicht durch hast, ist es gut.
Die dort investierte Zeit ist gut angelegt.

Bei Ausprobieren und Spielen mit dem Projekt.

https://youtube.com/@IMDFHTrier schau mal auf den Kanal der hat mehrere Kapitel zum Thema Arduino und erklärt es meiner Meinung nach echt gut. Man muss aber bedenken, dass die Videos mittlerweile 10 Jahre alt sind und man hier und da vorallem was die IDE angeht bischen für sich anpassen. Aber ansonsten echt top das ganze.

das ist ein Widerspruch. Tutorials nehmen oft ein Projekt als Grundlage um einen Aspekt zu erklären, damit liegt es in der Natur der Sache, dass ein Tutorial genau dieses eine Projekt betrachtet.

Wenn du Grundlagen lernen willst - dann musst du C++ lernen.
Du kannst einfach mit allen Beispielen in der IDE beginnen und diese Nachbauen und verstehen lernen, dann hat du eine gute Basis.

Besorg dir ausreichend Taster, Schalter, LEDs und ein paar Rotary Encoder, sowie einen Arduino Pro Mini mit einem Atmega 32u4 und arbeite dich schrittweise ein.
Mach für jede Teilfunktionalität einen eigenen Sketch. Was auch immer du tust - verwende kein delay().

Wenn dann alle Sketche für sich laufen, dann beginn einen nach den anderen in deinem gesamten Sketch hinzuzufügen.

Hallo !
Vielen vielen Dank schon mal für die Antworten !

@evil17
Danke für den youtube link, werde ich mir anschauen.

@noiasca
Ja wenn man bei Arduino Tutorials bleibt ist das ein Widerspruch wenn man dann bei C++
ankommt um sich die Basics drauf zu schaffen sind die halt zu Projekt bezogen. :slight_smile:
Aber will mich nicht zanken.

Ich habe jede Menge Elektronik Bauteile, Kabel und breadboards etc.

Mein Plan wäre aber zu lernen an meinem Projekt. Also ich würde mir eure Tips zu Herzen nehmen und "Versuchsaufbauten" durchführen um zu lernen aber ich würde das evtl. auch schon in die Richtung meines Projekts orientieren. Ich hoffe das klappt.

Das mit delay() sein lassen habe ich schon öfters gelesen/gesehen und versteh sogar warum.
Weil der Arduino dann einfach nichts mehr macht in der Zeit und das einfach schlechter Code ist.

Jetzt aber mal was grundsätzliches nochmal zu Projekt, ich besitze mehrere 32u4 Klone und brauche für mein Projekt 16 (o. 18) Tasten, und ein Joystick, wie geschrieben evtl. ein rotary Encoder als Mousewheel (Aber das wäre Phase II des Projektes, erstmal egal)

Jetzt bin ich folgende Librarys gestolpert: XInput, HIDInput und Keyboard Library. Ich frage mich jetzt was für mein Projekt das beste wäre.

Xinput: Wäre dann für Windows und das Spiel eine klare Angelegenheit, müsste ich nur wegen der Anordnung der Tasten schauen und gibt evtl. dann Probleme wenn wirklich ein Gamepad mit benutzt wird bzw. kann man die XInput Tasten nicht immer frei belegen.
HIDInput: scheint mir dann die nächst schlüssige Sache zu sein und flexibler, auf mich wirkt der Sketch aber komplexer.

Das ist mein pro micro pinout (Beschriftung identisch), ist es damit realisierbar ?
Wie benenne ich denn die TX/RX wenn ich die als Tasten nehmen will ? Einfach 0,1 ?
Ich brauche dann wohl so wie ich das sehe und keine Keyboard Matrix löten möchte nahezu alle
I/Os

Vielen, vielen, vielen Dank für eure Tipps und Zeit! Foren sind immer ein Guter Anlaufpunkt
um Wissen zu teilen und zu helfen. Ich muss nur schauen wie ich es geregelt bekomme.

Ich will ehrlich sein, ich muss das jetzt erst alles für mich sortieren und mein Projekt erst mal zu Ende drucken und dann schauen wir weiter.

Ich wünsche euch noch einen schönen Sonntag !

an deiner Stelle würde ich

  • für pin0/pin1 einen TTL-USB Adapter besorgen und diesen zum Debuggen verwenden. Die Serielle Ausgabe ist fast das einzige Mittel das du zum Debuggen hast.
  • schau dir die Beispiele zum Keypad an. z.B. kannst du mit 8 Pins 16 Taster (in einer 4x4 Matrix) auslesen
  • dann hast noch freie Pins für den Encoder und einige freie Pins für Schalter.
  • und suche mal nach "Arduino Buttonbox" ... das soll doch reichlich Info rauskommen.

Hi,
einen TTL Adapter hatte ich sogar für eine ESP32Cam um meinen 3D Drucker zu überwachen.
Hab den dann einem Kumpel samt einer Cam geschenkt.

Blöd gefragt wenn meine 32u4 Klone direkt einen USB Anschluss haben ersetzt das nicht den TTL Adapter ?
Ist das bei der Arduino IDE dann nicht der "Serielle Monitor" wo ich dann das Ergebnis sehe was grade passiert (oder auch nicht) ?

Die Matrix würde ich mir tatsächlich gerne erst mal sparen wenn die Möglichkeit besteht
16 Tasten + die zwei analogen X/Y Werte von dem Joystick anzuschließen/auszulesen, müsste aufgehen sowie ich das sehe sogar genau.

Das mit dem Rotary Encoder ist wie gesagt Zukunft, dafür muss ich mir dann erst mal Konstruktionstechnisch was überlegen und drucken. Dann würde ich das auch mit der Matrix angehen. Manchmal gehts auch einfach nur ums machen, das wäre dann ein schönes Anschluss Projekt. Ich muss ja jetzt schon rum basteln weil der Maker von dem Ding ja ein Controller zerlegt und umgelötet hat und ich ja einen Pro Micro benutzen möchte.

VG

nein. Der "USB" wird zu deinem HID.
Die Seriellen Ausgaben siehst du dann am TX1.

Wenn du den Pro Mini schon hast - mach einen einfachen Sketch und probier es aus.

Ah okay...Danke wusste ich nicht.

Denke ich werde dann evtl. doch den "steinigeren" Weg gehen...
macht schon Sinn was du schreibst.

Ich wollt es nur für den Anfang simpel halten.
Eine Matrix habe ich noch nie gelötet und muss das ja auch so löten das ich das alles in das Teil rein bekomme. Mit Dioden, Kabel etc.

Gäbe es denn vielleicht die Möglichkeit den Script soweit zu erstellen das man es noch debuggen kann und dann einfach die 2 Pins noch ergänzt wenn ich die Matrix doch erst mal umgehen will ?
und es soweit läuft. Also das ich bis an die beiden Pins ran gehe und probiere und wenn es läuft
die beiden Pins dann umfunktioniere ?

Was ich auch noch gelesen habe ist das man den Bootloader aktivieren kann wenn man 2x reset drückt, wäre es interessant die Funktion zu berücksichtigen in dem ich einen "reset" verdrahte und erreichbar mache ?

VG

ja.

Guten Morgen zusammen,
ich bin noch beim drucken und habe da diverse kleinere Problemchen gehabt aber das einfache spiegeln der asymmetrischen Teile auf die Rechte Hand hat unverschämt reibungslos geklappt.

Aus Kompatibilitätsgründen werde ich mich doch erst mal primär mit der XInput library befassen und werde dann wohl jeden Port bzw. Taste einzeln ansteuern und hoffe das geht auf.

Jetzt muss ich erst mal, noch Teile korrigieren, löten und mir Gedanken machen wie ich das alles sinnvoll arrangiere damit ich ca. 35 Kabeln den Überblick behalte.

Die Youtube Videos sind absolut GOLDWERT, danke dafür. Leider merkt man an der Art und Weise wie die gemacht wurden das die mind. 10 Jahre alt sind :blush:

Ich finde die Lösung vom Forum das Threads nach 6 Monaten nach der letzten Aktivität geschlossen werden auch mega sinnvoll nur weiß ich jetzt nicht wie schnell ich voran komme mit dem Projekt das ist dann was doof, könnte man die nochmal reaktivieren zur Not?

Ich glaube ich hab auch Unfug gemacht ich habe mir nochmal einen neuen Mikro Controller bestellt, aufgrund der Tatsache da dort die Dig. & Analogen Inputs klar beschrieben wurden und ich dachte es wären mehr, sind es aber doch gar nicht und ich brauche noch einen TTL USB Adapter.

Den hier:
https://www.makershop.de/plattformen/arduino/arduino-pro-mini-atmega328/

Jetzt hat der leider keine USB Schnittstelle onboard, sehe ich das richtig das man dann den TTL Adapter permanent verlöten müsste ?
und in der Beschreibung sprechen die von 20 Dig. inputs + 8 analoge aber die zähle ich nicht..
oder blick es nicht. wahrscheinlich ist es die Doppelbelegung.

Bei dem Pro Micro habe ich total 18 I/Os mit denen ich zurecht kommen muss.
Bei dem Pro Mini zähle ich 20 aber weiß nicht wie ich die USB Schnittstelle realisiere ?
Aber die 2 I/Os die ich mehr habe würden mir schon schmecken für das Projekt oder gehen die im Zweifel für den USB Anschluß drauf und ich habe die gleichen 18 I/Os

Würdet ihr das ganze Projekt auch modular gestalten oder alles fest verlöten/verkleben wie ist da eure Haltung ?
Ich bin irgendwie der nach Möglichkeit modulare Typ, solange der Aufwand den nutzen rechtfertigt.
Ich überlege nämlich ob ich einfach lange Breadboard Kabel nehme und die abpitsche und an die Taster und Joystick verlöte und dann die Beinchen vom Pro Mini/Micro 90° winkeln damit die Konstruktion flach bleibt und die einfach nur anstecke. Guter Plan ? bzw. habt ihr einen Trick wie man alle Pins gleichmäßig gebogen bekommt ?

Letzte Frage habt ihr einen Geheimtipp für Arduino, Zubehör und Kabel Teile ?
Ist es immer bei guten Preisen China + warten und keine Ahnung ob das der Qualität entspricht
oder dt. Shops mit dt. Preisen ?

Man kann es auch nicht oft genug sagen: Danke für eure Zeit und Hilfe !
es braucht halt leider alles nur seine Zeit.
Schönen Sonntag soweit

VG
Seba

Ja. Nachricht an Moderator

Wenn der Pro Mini nicht verlötet ist kann man doch schon "gebogene" Leiste nehmen. oder was ich sehr oft nutze Schraubklemmen in 2,5mm Raster

Ja, bitte wende Dich vertrauensvoll an unseren Moderator @uwefed, der das für Dich erledigt. Wenn Du dran denkst, kannst Du aber auch nur eine Antwort schreiben. dann bleibt das Thema weitere sechs Monate zugänglich. Es lebe der elektronische Kalender oder ein ESP32 macht eine LED für Dich an :slightly_smiling_face:

Ja, wenn er permanent dranbleiben soll. Ich mache das steckbar, benötige es nur für neue Programme.

Aber der ATMega328P kann kein HID, für Dich also nicht zu verwenden.

Verwende Portexpander wie beispielsweise MCP23017 oder MCP23S17 für Tasten und TLC5947 für LEDs.

Wegen der vielen Pins würde ich Dir gerne den Mega2560 PRO mini empfehlen, da gibt es genügend Pins für Drehencoder und Potis, leider kann der nicht HID. Daher wäre auch eine Möglichkeit, Mega2560 und Pro Micro miteinander zu verbinden, beispielsweise per I²C oder UART.

Hat der Mega2560 einen ATmega16U2 als USB-Schnittstelle drauf, könntest Du auch mal einen Blick auf meine Anleitung: UNO als Human Interface Device (HID) Tastatur werfen. Das sollte auch mit einem Mega2560 funktionieren.

Zur Programmierung: Die Arduino-IDE verwendet einen C++-Compiler, also OOP. Glücklicherweise, je nach Sichtweise, versteht er auch prozedurale Programmierung. Daher kann man selbst, wenn einem das leichter fällt, erstmal prozedural programmieren und benötigt die OOP-Grundlagen nur lesend zum Verstehen der Anwendung von Bibliotheken. Es kann sehr hilfreich sein, Informationen aus h-Dateien zu entnehmen, beispielsweise die zur Verfügung stehenden Methoden und deren Parameter. Auch sind die Kommentare manchmal aussagekräftiger als die Dokumentation.

Das Arduino-Programm läuft wie auf einem Server immer im Kreis, der Name loop sagt das deutlich. Eine Herzschlagfunktion mit blinkender LED sollte regelmäßig schlagen, dann hast Du blockadearm programmiert.

Eine Schrittkette (=finite state machin, =endlicher Automat) hilft Dir, Deinen Ablaufplan umzusetzen.

Ein ausführlich kommentiertes Beispiel.