Hallo zusammen,
ich brauche mal eure Hilfe. Nach langer Pause mit DIY-Projekten bin ich während der X-ten Coronawelle auf dumme Gedanken gekommen, die ich grade versuche mit einem Arduino Leonardo umzusetzen.
Ich möchte mir gerne für einige meiner Lieblingssimulatoren eigene Konsolen bauen. Angefangen mit einer kleinen Konsole für den Landwirtschaftssimulator 22. Dafür habe ich mir einiges an Equipment gekauft, zahlreiche Joysticks, Knöpfe, Taster, Hebel etc etc.
Lange Rede kurzer Sinn. Das eigentliche Problem was ich habe ist ein Joystick (3 Achsen) der nicht so will wie ich mir das vorstelle. Amazon link
Der Joystick verfügt über 2 Potentiometer für die X und Y Achse, die funktionieren auch einwandfrei. Mit 5V und GND angeschlossen und jeweils der mittlere Pol an A0 bzw A1 kann ich die Daten abgreifen und wunderbar per Joystick Library von Matthew Heironimus im Spiel einbinden.
Allerdings macht mir die Drehung des Joysticks Probleme (Z-Achse) in Amazon ist die Rede von 4-Achsen, ich kann allerdings nur 3 finden, bzw denke es sind 3?
Aus dem Joystick (Drehregler) führen 5 Kabel nach außen. Schwarz (-), Rot(+), Gelb(?), Gelb(?), Weiß(Achse). So meine Theorie. Ich habe das soweit durchgemessen und Gelb-Gelb ist jeweils die Verkabelung für den Button.
Allerdings bekomme ich bei dem Messen des weißen Kabels wirklich seltsame Werte, die ich einfach nicht zugeordnet bekomme.
Ich habe dafür ein kleines Skript geschrieben, um es zu verstehen. Ich verstehe es allerdings trotzdem nicht. Ist der Joystick einfach Defekt? Oder mache ich was falsch? Software- oder Hardwaretechnisch?
Hier ein paar Szenarien:
Joystick - Neutral
VRrx = 504 VRry = 493 VRrz = 37 SW = 1
Joystick - Fully Left
VRrx = 1023 VRry = 491 VRrz = 40 SW = 1
Joystick - Fully Right
VRrx = 0 VRry = 454 VRrz = 40 SW = 1
Joystick - Fully Up
VRrx = 486 VRry = 1013 VRrz = 54 SW = 1
Joystick - Fully Down
VRrx = 608 VRry = 0 VRrz = 55 SW = 1
Joystick - Neutral
VRrx = 504 VRry = 493 VRrz = 37 SW = 1
Joystick - (Z) Turning Left
VRrx = 541 VRry = 495 VRrz = 0 SW = 1
Joystick - (Z) Turning Right
VRrx = 487 VRry = 487 VRrz = 637 SW = 1
Bild im Neutralzustand
Die z-Achse verhält sich absolut nicht wie die anderen beiden und schwankt beim drehen nach Rechts zwischen 400-650 und beim drehen nach links bei 0. Kann diese somit nicht als Rudder o.ä. nutzen.
Hat jemand eine Idee?
Vielen Dank im Voraus und viel Grüße!!
const int VRxPin = A0; // Anschluss Potentiometer X Achse
const int VRyPin = A1; // Anschluss Potentiometer Y Achse
const int VRzPin = A2; // Anschluss Potentiometer Z Achse
const int SWPin = 5;
int VRx = 0; // value read from the horizontal pot
int VRy = 0; // value read from the vertical pot
int VRz = 0; // value read from the Z turning pot
int SW = 0; // value read from the switch
void setup() {
Serial.begin(9600);
pinMode(SWPin,INPUT_PULLUP);
}
void loop() {
VRx = analogRead(VRxPin);
VRy = analogRead(VRyPin);
VRz = analogRead(VRzPin);
SW = digitalRead(SWPin);
// print the results to the Serial Monitor:
Serial.print("VRrx = ");
Serial.print(VRx);
Serial.print("\tVRry = ");
Serial.print(VRy);
Serial.print("\tVRrz = ");
Serial.print(VRz);
Serial.print("\tSW = ");
Serial.println(SW);
delay(200);
}