Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Gartenautomation
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Deutsch
  • English
Menu

Arduino Leonardo als Maus: Simuliere Bewegungen und Klicks mit dem Joystick Shield

Posted on 23. Februar 202419. Februar 2024 by Stefan Draeger

In diesem Beitrag zeige ich dir, wie du mithilfe des Arduino Leonardo eine Maus simulieren kannst und dabei das Joystick Shield HU-M16 einsetzt. Der Arduino Leonardo ist dabei unverzichtbar, da er den MEGA32u4 Chip verwendet, welcher das Feature USB-HID unterstützt. Dieser Chip ermöglicht es, Tastatur- und Mausaktionen direkt vom Mikrocontroller aus zu simulieren.

Arduino Leonardo als Maus: Simuliere Bewegungen und Klicks mit dem Joystick Shield
Arduino Leonardo als Maus: Simuliere Bewegungen und Klicks mit dem Joystick Shield

Inhaltsverzeichnis

  • Mikrocontroller Arduino Leonardo im Überblick
  • Vorbereitungen
  • Programmieren einer Mausbewegung in der Arduino IDE
    • Beispiel von Arduino.cc

Mikrocontroller Arduino Leonardo im Überblick

Für diesen Beitrag verwende ich den Arduino Leonardo von Keystudio dieser steht dem Original in nichts nach, kostet dabei zusätzlich weniger als die Hälfte.

Herzstück von diesem Mikrocontroller ist der Atmel MEGA32U4 Chip, welcher neben den genannten Feature vom Simulieren von Tastatur und Mausaktionen noch weitere hat.

MikrocontrollerAtmega32u4
Betriebsspannung5 V
Eingangsspannung
(über Jack Adapter)
7 bis 12 V
digitale I/O Pins20, davon 7 als PWM Pins
analoge Eingänge12
max. Stromaufnahme
pro I/O Pin
40 mA
max. Stromaufnahme
an3.3V Pin
50 mA
Speicher32 KB Flash Speicher,
2,5 KB SRAM,
1 KB EEPROM
Taktgeschwindigkeit16 MHz
Chip - MEGA32U4 vom Arduino Leonardo
Chip – MEGA32U4 vom Arduino Leonardo

Vorbereitungen

Vor dem Einstieg in die Programmierung teile ich gerne meine Erfahrungen. An meinem PC nutze ich drei Monitore, dazu eine Tastatur und Maus. Bei der Simulation einer Mausbewegung mit dem Arduino Leonardo stört die vorhandene „echte“ Computermaus. Während meiner Tests musste ich stets die Computermaus ausschalten. Außerdem gestaltete sich die Arbeit mit allen drei Monitoren weniger vorteilhaft.

Programmieren einer Mausbewegung in der Arduino IDE

Für die Simulation einer Mausbewegung erhalten wir eine kleine Bibliothek zur Arduino IDE mitgeliefert. Diese Bibliothek ist nur lauffähig, wenn ein Arduino Leonardo ausgewählt wurde!

Solltest du also den nachfolgenden Fehler erhalten, so prüfe zunächst, ob der korrekte Mikrocontroller ausgewählt wurde.

Compilation error: ‚Mouse‘ not found. Does your sketch include the line ‚#include <Mouse.h>‘?

Beispiel von Arduino.cc

Auf der englischen Seite https://www.arduino.cc/reference/en/libraries/mouse/ findest du nicht nur eine ausführliche Anleitung zu den Events des Mouse Objektes, sondern auch ein lauffähiges Beispiel mit einem Joystickmodul.

demonstration Mausbewegung simulieren mit Arduino Joystick Shield HU-M16
Dieses Video auf YouTube ansehen.

Das Beispiel ist lauffähig, jedoch fehlt noch die Funktion zum Klicken der linken und rechten Maustaste und auch war dieses sehr unnötig umständlich programmiert. Ich habe mir die Freiheit genommen und dieses umgeschrieben.

//Bibliothek zum simulieren einer Aktion mit der Maus.
#include <Mouse.h>

// Taster des linken Joysticks am digitalen Pin D2 angeschlossen
#define mouseBtnLeft 2
// Taster des rechten Joysticks am digitalen Pin D2 angeschlossen
#define mouseBtnRight 4

// Pins der X & Y Achsen
#define xAxis A0
#define yAxis A2

// 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() {
  //Pins der Taster über den internen 10kOhm Widerstand leiten
  pinMode(mouseBtnLeft, INPUT_PULLUP);
  pinMode(mouseBtnRight, INPUT_PULLUP);

  Mouse.begin();
}

void loop() {
  //auslesen des aktuellen Wertes der xAchse
  int xAxisValue = analogRead(xAxis);
  xAxisValue = 1023 - xAxisValue;

  //auslesen der yAchse
  int yAxisValue = analogRead(yAxis);

  int xReading = calcDisplayPosition(xAxisValue);
  int yReading = calcDisplayPosition(yAxisValue);
  //umkehren des Wertes der yAchse
  yReading = -yReading;

  //Bewegen des Mauszeigers zur neuen Koordinate
  Mouse.move(xReading, yReading, 0);
  //eine kleine Pause
  delay(responseDelay);

  //Wenn der linke Taster betätigt wird,
  //dann soll die linke Maustaste betätigt werden.
  if (digitalRead(mouseBtnLeft) == LOW) {
    Mouse.press(MOUSE_LEFT);
  } else {
    Mouse.release(MOUSE_LEFT);
  }

  //Wenn der rechte Taster betätigt wird,
  //dann soll die rechte Maustaste betätigt werden.
  if (digitalRead(mouseBtnRight) == LOW) {
    Mouse.press(MOUSE_RIGHT);
  } else {
    Mouse.release(MOUSE_RIGHT);
  }
}

//Berechnen der neuen Position aus dem analogen Wert
//von 0 bis 1023.
int calcDisplayPosition(int axisValue) {
  int reading = map(axisValue, 1023, 0, 0, range);
  int distance = reading - center;
  if (abs(distance) < threshold) {
    distance = 0;
  }
  return distance;
}

Damit du den gesamten Code nicht abtippen oder kopieren musst, kannst du dir hier das gezippte Programm zum simulieren einer Maus am Arduino Leonardo herunterladen.

Programm zum steuern des Mauszeigers mit dem Arduino Joystick Shield HU-M16 am Arduino LeonardoHerunterladen

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}