Ich habe wieder ein neues Projekt, welches ich mit Euch teilen möchte. Wobei diesmal weniger die Programmierung im Vordergrund steht, als die Idee und die Konstruktion des Gehäuses.
Mit Veröffentlichung des neuen Landwirtschafts-Simulator 22 kam mir der Wunsch, die Maschinen und Geräte in diesem Simulator etwas „handfester“ zu bedienen. Bisher habe ich mit einem Gamepad gespielt.
Natürlich blieb der Logitech Saitek Farm Sim Controller nicht ganz unbeachtet, aber wie so oft, bin ich nicht bereit, so viel Geld auszugeben.
Ich habe angefangen, das Internet nach DIY-Projekten zu durchsuchen und bin auf ein Joystick-Modell (JH-D400X-R4) aufmerksam geworden, welches sich ohne zusätzlich Elektronik an einen Mikrocontroller anschließen lässt, da dieser einfach nur aus 3 10 KOhm Potentiometern besteht. Der Pro Micro Mikrocontroller auf ATMEGA32U4-Basis bietet zudem eine sehr günstige Möglichkeit ein USB-Eingabegerät zu basteln.
Da ich mittlerweile auch einen 3D-Drucker (Ender 3 V2) besitze, habe ich einen ersten Prototyp in Blender konstruiert. Das war eine sehr gute Möglichkeit, mich in Blender einzuarbeiten: Meine Güte, ist Blender umfangreich…
Mein erster Prototyp sah so aus:
Davon habe ich nur die Frontplatte gedruckt um ein Feeling für die Größe zu bekommen und einschätzen zu können, ob das alles sinnvoll ist. Ergebnis: NEIN!
Ein weiterer Prototyp, den ich aber noch nicht einmal in Teilen gedruckt habe, war dieser:
Ein wenig orientiert am Controller von Logitech und Saitek, kam folgendes Modell heraus:
Gedruckt in 3 Teilen, lässt sich das Gehäuse nach ein wenig Nachentwicklung und Feintuning komplett schraubenlos zusammenbauen. Zudem gibt es jetzt einen Bereich zur Handauflage, was den Joystick jetzt auch vernünftig bedienbar macht. Ergebnis ist ein 13 Tasten-Controller (12 + 1 am Joystick) und 3 Achsen-Joystick (X, Y, Z Rotation).
Ich weiß übrigens nicht, warum der Joystick als 4-Achsen Joystick verkauft wird. *kopfschüttel*
Wie gesagt, rückt die Programmierung in den Hintergrund, da ich die Joystick Library von Matthew Heironismus (Link zu seinem Blog) verwende und einfach ganz rudimentär den Sample-Code auf 13 Buttons und 3 Achsen erweitert habe. Es werden die Werte vom analogRead direkt an das Joystick-Objekt übergeben.
int x = analogRead(pinToAxisX); int y = analogRead(pinToAxisY);
int zr = analogRead(pinToRAxisZ);
Joystick.setXAxis(x);
Joystick.setYAxis(y);
Joystick.setRzAxis(zr);
Für jeden Button wird lediglich der letzte Status gespeichert und überprüft.
int stateButton1 = !digitalRead(pinToButton1);
if (stateButton1 != lastStateButton1) {
Joystick.setButton(0, stateButton1);
lastStateButton1 = stateButton1;
}
Ich habe das Gehäuse auch einmal gespiegelt gedruckt und zwei dieser Controller im Landwirtschafts-Simulator 22 zusammen mit einem Logitech G29 Lenkrad erfolgreich im Einsatz.
Schreibe einen Kommentar