In diesem Beitrag möchte ich dir zeigen, wie du einen Arduino Leonardo mit einem kleinen Joystick als Mausersatz am Computer einsetzen kannst.
Dieser Beitrag ist aus einem Kommentar zum bereits veröffentlichten Beitrag zum Arduino UNO & Joystick Beitrag entstanden.
Bezug eines Joysticks für den Arduino Leonardo
Es gibt den kleinen Joystick für den Anschluss am Arduino oder auch Raspberry Pi (oder vergleichbarer Mikrocontroller) auf ebay.de für knapp 4 €* aus dem asiatischen Raum.
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Aber du findest diesen auch auf amazon.de* oder aliexpress.com für einen ebenso günstigen Preis.
Warum ein Arduino Leonardo und kein UNO?
Der Leonardo verfügt über die Fähigkeit, als USB HUD zu dienen. Das bedeutet, dass du über diesen Mikrocontroller Maus & Tastaturbefehle senden kannst.
Im Beitrag Arduino Lektion 68: 4×4 Matrix Tastatur habe ich bereits gezeigt, wie man Tastaturbefehle an einen Computer sendet und somit die Software Eclipse steuern kann.
Aufbau der Schaltung am Arduino Leonardo
Für den Aufbau der Schaltung benötigst du einen Arduino Leonardo, ein paar Breadboardkabel sowie einen Joystick.
Erstellen des Programmes in der Arduino IDE
Der nachfolgende Quellcode basiert auf dem Beispiel “Mouse.move()” aus der Arduino Referenz. Jedoch habe ich dieses etwas abgewandelt.
In meinem Fall war die X Koordinate vertauscht!
#include <Mouse.h> // Taster des Joyesticks am digitalen Pin D2 angeschlossen #define mouseBtn 2 // Pins der Achsen #define xAxis A0 #define yAxis A1 // Mausgeschwindigkeit int range = 5; // Geschwindigkeit der Maus int responseDelay = 15; // Schwellwert für die übernahme einer Positionsänderung int threshold = range / 4; int center = range / 2; void setup() { pinMode(mouseBtn, INPUT_PULLUP); Mouse.begin(); } void loop() { int xAxisValue = analogRead(xAxis); xAxisValue = 1023 - xAxisValue; int yAxisValue = analogRead(yAxis); int xReading = calcDisplayPosition(xAxisValue); int yReading = calcDisplayPosition(yAxisValue); Mouse.move(xReading, yReading, 0); delay(responseDelay); if (digitalRead(mouseBtn) == LOW) { Mouse.press(MOUSE_LEFT); } else { Mouse.release(MOUSE_LEFT); } } int calcDisplayPosition(int axisValue) { int reading = map(axisValue, 1023, 0, 0, range); int distance = reading - center; if (abs(distance) < threshold) { distance = 0; } return distance; }
2 thoughts on “Arduino Leonardo & Joystick als Mausersatz”