Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino Joystick-gesteuerte Maus: Präzise Cursor-Navigation

Komponenten und Zubehör

Komponente Menge
Arduino UNO 1
Dual-Achsen-Joystick 1

Apps und Online-Dienste

Projektbeschreibung

Als Alternative zur Steuerung des Mauszeigers per Maus oder Trackpad wurde hier eine Joystick-basierte Lösung realisiert. Der Joystick bewegt den Cursor in X- und Y-Richtung und führt per integriertem Taster einen Klick aus.

Grundlagen

Ein Joystick besteht im Wesentlichen aus zwei Potentiometern für die X- und Y-Achse. Der Arduino liest analoge Werte im Bereich 0–1023 ein. In Mittelstellung liegt der Wert nahe 512. Der Sketch mappt Abweichungen von der Mitte auf einen Empfindlichkeitsbereich (Standard ±10). Bewegt man den Joystick vollständig in eine Richtung, wird +10 bzw. -10 gesendet.

Die X- und Y-Werte werden durch einen Doppelpunkt getrennt über die serielle Schnittstelle ausgegeben, gefolgt vom Tasterstatus (1/0). Beispiel: 5:-3:0.

Python-Programmierung

(Aktualisiert am 11.12.2020: Bibliothek von pyautogui auf mouse geändert.)

  1. Python 3 installieren (falls nicht vorhanden).
  2. Im Terminal/Kommandozeile folgende Befehle ausführen:
    cd <Pfad zum Python-Skript>
    py -m pip install --upgrade pip
    py -m pip install mouse
    py -m pip install pyserial
    

Das Python-Skript liest die seriellen Daten des Arduino, extrahiert X-, Y- und Tasterwerte und bewegt den Mauszeiger entsprechend. Die aktuelle Cursorposition wird via mouse.get_position() ermittelt. Die Bewegung erfolgt durch mouse.move(X+x, Y-y). Ein Klick wird durch mouse.click(button="left") ausgelöst, wenn der Taster gedrückt ist (z=1).

Endgültige Ausführung

  1. Arduino-Sketch hochladen und Joystick gemäß Schaltplan verdrahten.
  2. Python-Skript in eine .py-Datei kopieren, den korrekten COM-Port des Arduino eintragen (im Geräte-Manager prüfbar).
  3. Datei in IDLE öffnen und Modul ausführen (F5).
  4. Bei Fehlern: IDLE neu starten, COM-Port prüfen.
  5. Joystick bewegen – der Cursor folgt.

Code

Arduino-Code

////////////////////////////////////
// Joystick-gesteuerte Maus
// von Shubham Santosh
////////////////////////////////////

void setup() {
  Serial.begin(9600);
  pinMode(9, INPUT);       // SW-Pin
  digitalWrite(9, HIGH);   // Pull-up
}

int prev_state = 0;

void loop() {
  int xpos = 0, ypos = 0, z = 0;
  int x = analogRead(A0);
  int y = analogRead(A1);
  int sensitivity = 10; // Empfindlichkeit anpassbar

  if (x >= 550)       xpos = map(x, 550, 1023, 0, sensitivity);
  if (x <= 450)       xpos = map(x, 450, 0, 0, -sensitivity);
  if (y >= 550)       ypos = map(y, 550, 1023, 0, sensitivity);
  if (y <= 450)       ypos = map(y, 450, 0, 0, -sensitivity);

  int curr_state = digitalRead(9);
  if (curr_state == 1 && prev_state == 0) z = 1; // Taster gedrückt
  else z = 0;

  if (xpos != 0 || ypos != 0 || z == 1) {
    Serial.print(xpos);
    Serial.print(":");
    Serial.print(ypos);
    Serial.print(":");
    Serial.println(z);
  }
  prev_state = curr_state;
  delay(10);
}

Python-Code

# Joystick-gesteuerte Maus
# Von Shubham Santosh
# Letzte Änderung: 11.12.2020

import mouse, sys, time, serial

mouse.FAILSAFE = False
ArduinoSerial = serial.Serial('COM3', 9600)  # Korrekten COM-Port angeben!
time.sleep(1)

while True:
    data = str(ArduinoSerial.readline().decode('ascii')).strip()
    if not data:
        continue
    x, y, z = data.split(":")
    X, Y = mouse.get_position()
    x, y = int(x), int(y)
    mouse.move(X + x, Y - y)  # Y-Achse invertiert
    if '1' in z:
        mouse.click(button="left")

Schaltplan

Der Schaltplan zeigt die Verbindung des Joysticks mit dem Arduino (A0, A1, Pin 9 für den Taster, 5V, GND).

Arduino Joystick-gesteuerte Maus: Präzise Cursor-Navigation
Verdrahtung des Joysticks mit Arduino UNO

Herstellungsprozess

  1. Die Evolution der Computermaus: Design, Fertigung und Zukunftstrends
  2. Temperaturgesteuerter Lüfter: DIY Relais-System für Medienmöbel-Kühlung
  3. Raspberry Pi-gesteuertes Aquaponik-System: Bauanleitung & Code
  4. Bewegungsgesteuerter AWS IoT Button mit Raspberry Pi, PIR-Sensor und MQTT
  5. Bluetooth-gesteuerter Raspberry Pi Roboter mit Audio-Feedback bauen
  6. WLAN-gesteuerter Raspberry Pi Roboter mit Python bauen – Schritt-für-Schritt
  7. Alexa-gesteuerter ARDrone 2.0: Sprachaktivierte Drohne mit Raspberry Pi & Hologram Nova
  8. Altes RC-Auto per Xbox-Controller & Arduino zum Joystick-Fahrzeug umbauen
  9. Interaktives Joystick-Spiel mit Arduino & LED-Feedback
  10. FeNi42 Legierung: Niedrige Thermische Ausdehnung für Präzisions-Dichtungen