Joystick selber bauen?

Doch, die liegt sicher bei oder ist bei Kosmos als Download zu finden.
 
Alles Quatsch, weil du brauchst Treiber. Nimm lieber nen USB Controller deiner Wahl, für den es Treiber für dein OS gibt und bau einen Analogstick aus, und/oder schalte deinen Analogstick parallel dazu. Fertig ist die Laube.
 
So wie sich das liest (Keine Vorkentnisse, jah nicht zu Kompliziert) brauchst du mit einarbeitung bestimmt ~100-200 Stunden bis das läuft.
bist du bereit diese Zeit zu investieren?
 
Incanus schrieb:
Doch, die liegt sicher bei oder ist bei Kosmos als Download zu finden.
Also, ich habe es jetzt so gemacht:
Heisst beide analogsticks genommen und angeschlossen an je +5V, GRND und A0/A1. Wie ich das alles gecodet habe schreibe ich morgen, ist schon spät und jetzt alles auf Handy tippen will ich nicht. Ich kann aber sagen das wenn ich den JoyStick gegen oben vewege es W drüxkt, gegen unten S, gegen links A und gegen rechts D. Wenn ich zurück in die Mitte gehe alles wieder still und nichts wird gedrückt.
IMG_0493.jpeg
 
FGA schrieb:
Alles Quatsch, weil du brauchst Treiber. Nimm lieber nen USB Controller deiner Wahl, für den es Treiber für dein OS gibt und bau einen Analogstick aus, und/oder schalte deinen Analogstick parallel dazu. Fertig ist die Laube.
Ich weiss nicht genau was du mit Treibern meinst. Ich habe es jetzt mit einem Arduino gemacht, da drauf folgenden Arduino code gespielt:

const int potPinX = A0; // Analog pin for X-axis potentiometer
const int potPinY = A1; // Analog pin for Y-axis potentiometer
const int threshold = 100; // Threshold value for potentiometer movement
void setup() {
// Initialize serial communication
Serial.begin(9600);
}
void loop() {
// Read potentiometer values
int xValue = analogRead(potPinX);
int yValue = analogRead(potPinY);
// Check X-axis potentiometer position
if (yValue < 800) {
// Potentiometer moved to the left
Serial.println("Left: Pressing 'd'");
// Add code to perform action when moved to the left
} else if (yValue > 900) {
// Potentiometer moved to the right
Serial.println("Right: Pressing 'a'");
// Add code to perform action when moved to the right
}
// Check Y-axis potentiometer position
if (xValue < 930) {
// Potentiometer moved up
Serial.println("Up: Pressing 'w'");
// Add code to perform action when moved up
} else if (xValue > 960) {
// Potentiometer moved down
Serial.println("Down: Pressing 's'");
// Add code to perform action when moved down

}
// Check for middle position
if (xValue >= 100 && xValue <= 100 && yValue >= 100 && yValue <= 900) {
// Joystick in middle position
Serial.println("Middle position");
// Add code to perform action for middle position
}
}

Das habe ich dann über Serial an den PC via COM3 gesendet und mit Python und mit Hilfe von den zwei Modulen pyserial und pyautogui ausgelesen und in virtuelle Keyboardpresses umgewandelt.

import serial
import pyautogui
pyautogui.PAUSE = 0

ser = serial.Serial('COM3', 9600) # Replace 'COM3' with the appropriate serial port

while True:
if ser.in_waiting > 0:
data = ser.readline().decode('utf-8').strip()
if "Left" in data:
print("Potentiometer moved to the left: Pressing 'd'")
pyautogui.keyDown('d') # Press the 'd' key
elif "Right" in data:
print("Potentiometer moved to the right: Pressing 'a'")
pyautogui.keyDown('a') # Press the 'a' key
elif "Up" in data:
print("Potentiometer moved up: Pressing 'w'")
pyautogui.keyDown('w') # Press the 'w' key
elif "Down" in data:
print("Potentiometer moved down: Pressing 's'")
pyautogui.keyDown('s') # Press the 's' key
elif "Middle" in data:
print("Joystick in middle position: No button press")
# Add code to perform action for middle position


Was ich auch noch sagen muss, das ich das nicht selber programmiert habe, das hat mein Freund und Helfer ChatGPT gemacht :). Ich habe ChatGPT nur geholfen bei was es mir programmieren soll und habe die Skripte noch etwas angepasst. Somit funktioniert es jetzt so, dass wenn ich den Joystick nach oben drücke W kommt, nach rechts D, nach links A und unten S. Falls das jemand nachmachen will kann ich Ihm gerne ein Tutorial bereitstellen.
 
Will Dir nicht zu nahe treten, aber WASD macht schon die Tastatur.
 
Es ist nur ein wenig Verschwendung das analoge Signal zum Drücken von vier Tasten zu ‘missbrauchen‘.
 
Ich dachte Du wolltest damit Gas geben, also ein lineares Signal in Abhängigkeit von der Joystick Stellung an den PC übermitteln.
 
möchte ich eigentlich auch, das ist aber fast unmöglich denke ich mit dem Arduino oder nicht?
 
Guten Abend
Vielen Dank für das Recherchieren, aber das geht leider nicht weil ich einen Arduino Uno von Kosmos, einen Kosmoduino habe. Keinen Leonardo oder Micro.
Ergänzung ()

calippo schrieb:
Ohne viel Ahnung vom Arduino zu haben, aber immerhin kann der die beiden analogen Eingangssignale (Widerstandswerte der Potentiometer) in diskrete Werte umsetzen.

Gegenüber dem PC müsste der Arduino sich jetzt wie ein Gamecontroller verhalten, hab ne Minute gesucht und das gefunden.
https://www.instructables.com/Create-a-Joystick-Using-the-Arduino-Joystick-Libra/

Theoretisch sollte das also schon möglich sein.
Habe jetzt hier ein kleines aber fein aussehendes Tutorial von meinem Helfer ChatGPT generieren lassen:

Wenn der Arduino Uno keine native USB-Unterstützung hat, kannst du dennoch ein lineares Signal in Abhängigkeit von der Joystick-Stellung an den PC übermitteln, indem du den Arduino als USB-HID-Gerät simulierst. Hier ist ein allgemeiner Ansatz, wie du dies erreichen kannst:

1. Verbinde den Joystick mit dem Arduino Uno. Überprüfe die Spezifikationen des Joysticks, um herauszufinden, welche Pins für die X- und Y-Achsen verwendet werden sollen. Normalerweise handelt es sich um analoge Eingänge.

2. Schließe den Arduino Uno an deinen PC an.

3. Du benötigst eine Bibliothek, die es dir ermöglicht, den Arduino als USB-HID-Gerät zu simulieren. Eine beliebte Bibliothek dafür ist die "Arduino-USBHID" Bibliothek von NicoHood. Du kannst sie von der Arduino Library Manager installieren.

4. Lade das Beispiel "Joystick" aus der Arduino-USBHID-Bibliothek herunter. Du findest es unter "Datei -> Beispiele -> USBHID -> Joystick".

5. Passe den Code des Beispiels an deine Anforderungen an. Ändere die Pins für die X- und Y-Achsen entsprechend den Pins, die du für den Joystick verwendest.

6. Du kannst auch die Werte für die Minimal- und Maximalwerte anpassen, je nachdem, welchen Bereich du für die Joystick-Stellung verwenden möchtest.

7. Lade den angepassten Code auf deinen Arduino Uno hoch.

8. Nachdem der Code hochgeladen wurde, wird der Arduino Uno als USB-HID-Gerät erkannt und sollte die Joystick-Stellung an den PC übermitteln.

Beachte, dass dieser Ansatz eine Simulation des USB-HID-Protokolls verwendet und nicht über die native USB-Kommunikation des Arduino Uno verfügt. Daher kann die Übertragungsgeschwindigkeit begrenzt sein und die Joystick-Stellung möglicherweise nicht so präzise übertragen werden wie bei einer nativen USB-Unterstützung.

Sieht gut aus und das probiere ich morgen mal aus.
 
Zuletzt bearbeitet:
Zurück
Oben