Hallo zusammen, erst mal kurz zu mir: Ich bin 55 und neu im Thema Arduino.
Ich habe einen Arduino Leonardo und ein UNO "The most complete Starter Kid" mit dem ich auch schon das ein oder andere Experiment erfolgreich durchgeführt habe. Kurz und gut daraus endstand die Idee (da ich passionierter LS22 Spieler bin) eine Buttonbox selber zu bauen der von einem Leonardo gesteuert wird.
Jetzt bin ich seid drei Tagen damit beschäftigt den Joystick an meinen Rechner zu bringen.
Die Box soll am Schluss ca. 30 Schalter haben und einen kleinen Joystick zum ausführen verschiedener Funktionen.
Ich habe mir einen Haufen Videos und Websites angeschaut zum Thema und mir einen kleinen Testaufbau gemacht bei dem nun 5 Buttons schon mal sauber einbinden lassen und auch gut Funktionieren.
Als nächstes will ich den kleinen Analogen Joystick den ich habe einbinden und verzweifele daran diesen in meinen Code einbinden
Der Joystick ist ein kleiner Analoger der im Set enthalten ist (soll später gegen einen anderen getauscht werden.
Er hat die Anschlüsse: GND, +5V, VRx, VRy, SW
VRx und VRy sind auf A0 und A1 angeschlossen aber ich bekomme es nicht hin das dieser mit Windows zusammen arbeitet
Hier mal der Code mit dem meine Buttons funktionieren:
#include <Joystick.h>
Joystick_ Joystick;
int xValue = 0; // variable to store x value
int yValue = 0; // variable to store y value
int notPressed = 0; // variable to store the button's state => 1 if not pressed
void setup() {
// Initialize Button Pins
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
pinMode(10, INPUT_PULLUP);
pinMode(11, INPUT_PULLUP);
pinMode(12, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
// Initialize Joystick Library
Joystick.begin();
}
// Constant that maps the phyical pin to the joystick button.
const int pinToButtonMap = 7;
// Last state of the button
int lastButtonState[6] = {0,0,0,0,0,0};
void loop() {
// Read pin values
for (int index = 0; index < 6; index++)
{
int currentButtonState = !digitalRead(index + pinToButtonMap);
if (currentButtonState != lastButtonState[index])
{
Joystick.setButton(index, currentButtonState);
lastButtonState[index] = currentButtonState;
}
}
delay(50);
}
Weiter bin ich noch nicht gekommen ich hoffe mir kann jemand sagen wie und an welcher Stelle ich hier nun den kleinen Joystick ins Spiel bringe so das dieser funktioniert. Nicht falsch verstehen ich hab nun drei Tage getestet gemacht und versucht einen Haufen gelesen und komme einfach nicht weiter.
Vielleicht kann mir hier im Forum wer auf die Sprünge helfen.
Solltet ihr noch weitere Informationen benötigen dann bitte nachfragen soweit ich kann beantworte ich die Fragen natürlich gerne.
Zeige mall link zum Joy. hat der wirklich Potis oder doch Microschalter
wenn der hat Potis muss man den über Analogen Pin auslesen.
Mein mini Joystick hat 4 Microschalter verbaut.
Also das Projekt kenne ich wie gesagt ich wühle mich da schon ein paar Tage durch
Ja der hat Potis aber halt nur zwei Ausgänge VRx und VRy und wenn ich das richtig verstanden habe sind och A0 und A1 analoge Eingänge oder nicht ?
Wenn der vier Ausgänge hätte wäre das klar dann könnte ich oben, unten, rechts, und links ansteuern aber so funktioniert das hier nicht
In dem Code werden bisher nur die Buttons an getriggert noch nicht der Joystick selber hier nochmal mit Kommentaren
#include <Joystick.h>
Joystick_ Joystick;
int xValue = 0; // variable to store x value
int yValue = 0; // variable to store y value
int notPressed = 0; // variable to store the button's state => 1 if not pressed
void setup() {
// Initialize Button Pins
pinMode(8, INPUT_PULLUP); // Button 1
pinMode(9, INPUT_PULLUP); // Button 2
pinMode(10, INPUT_PULLUP); // Button 3
pinMode(11, INPUT_PULLUP); // Button 4
pinMode(12, INPUT_PULLUP); // Button 5
pinMode(7, INPUT_PULLUP); // Button 6 can be expanded if necessary
// Initialize Joystick Library
Joystick.begin();
}
// Constant that maps the phyical pin to the joystick button.
const int pinToButtonMap = 7;
// Last state of the button
int lastButtonState[6] = {0,0,0,0,0,0};
void loop() {
// Read pin values
for (int index = 0; index < 6; index++)
{
int currentButtonState = !digitalRead(index + pinToButtonMap);
if (currentButtonState != lastButtonState[index])
{
Joystick.setButton(index, currentButtonState);
lastButtonState[index] = currentButtonState;
}
}
delay(50);
}
@Rintin lass den mall die Joysticks zum laufen bringen.
Schönheit OP kann man naher machen
Könne die Joy Lib nicht und habe dort auf die schnelle nix gefunden für analoge Joy.
Also Handbuch passt nicht zum Sketch
Gezeichnet korrekt A0. A1
Im Sketch wird jedoch D0, D1 verwendet = mehr als Falsch dazu kommt das am 0, und 1 hängt Serial.
Und Ja SW ist der Drucktaster am Joy
Okay getestet und für gut empfunden Der Joystick funktioniert genau so:
auto valueX = analogRead(A0);
Joystick.setXAxis(valueX);
auto valueY = analogRead(A1);
Joystick.setYAxis(valueY);
Das mit dem Array muss ich mir mal anschauen wo und wie ich das reinpacke klingt aber gut, da es ja noch einige Buttons mehr werden und das erst mal die Lösung war die Funktionierte. Ich werde mich damit mal eingehend beschäftigen,
Muss aber mal schauen ob ich eventuell noch Potis einbinden kann in das System.
Aber erst mal das Array
Danke @Rintin es war so einfach und ich hab drei Tage gesucht