Diese Seite ist auch in 2 anderen Sprachen verfügbar.
Sprache wechseln  

Mouse.move()

Beschreibung

Bewegt den Mauszeiger auf einem verbundenen Computer. Die Bewegung ist dabei immer relativ zu der aktuellen Position des Mauszeigers. Bevor Mouse.move() benutzt werden kann, muss Mouse.begin() aufgerufen werden.

Syntax

Mouse.move(xVal, yVal, wheel)

Parameter

xVal: Wie weit der Mauszeiger auf der X-Achse bewegt werden soll. Erlaubte Datentypen: signed char.
yVal: Wie weit der Mauszeiger auf der Y-Achse bewegt werden soll. Erlaubte Datentypen: signed char.
wheel: Wie weit das Mausrad gedreht werden soll. Erlaubte Datentypen: signed char.

Rückgabewert

Nichts.

Beispielcode

Bewegt den Mauszeiger anhand der analogen Eingänge.

#include <Mouse.h>

const int xAxis = A1;        // Analoger sensor für die X-Achse
const int yAxis = A2;        // Analoger sensor für die Y-Achse

int range = 12;              // Ausgabebreite der X- und Y-Bewegung
int responseDelay = 2;       // Antwortverzögerung der Maus in ms
int threshold = range / 4;   // Wartethreshold
int center = range/2;        // Warteposition
int minima[] = {1023, 1023}; // Aktuelle analogRead Minima für {x, y}
int maxima[] = {0, 0};       // Aktuelle analogRead Maxima für {x, y}
int axis[] = {xAxis, yAxis}; // Pinnummern für {x, y}
int mouseReading[2];         // Finale Position von {x, y}

void setup() {
  Mouse.begin();
}

void loop() {
  // Lies uns skaliere beide Achsen:
  int xReading = readAxis(0);
  int yReading = readAxis(1);

  // Bewege die Maus:
  Mouse.move(xReading, yReading, 0);
  delay(responseDelay);
}

/*
	Liest eine Achse (0 oder 1 für x oder y) und skaliert die
	analoge Eingabebreite auf eine Breite von 0 bis <range>
*/

int readAxis(int axisNumber) {
  int distance = 0; // Distanz von der Bildschirmmitte zum Rand

  // Lies den analogen Inputpin
  int reading = analogRead(axis[axisNumber]);

  // Wenn der aktuelle Wert das Maximum oder Minimum über-/ untersteigt,
  // setze das Maximum oder Minimum neu:
  if (reading < minima[axisNumber]) {
    minima[axisNumber] = reading;
  }
  if (reading > maxima[axisNumber]) {
    maxima[axisNumber] = reading;
  }

  // Mappe den gelesenen Wert von der Eingabebreite auf die Ausgabebreite:
  reading = map(reading, minima[axisNumber], maxima[axisNumber], 0, range);

  // Wenn die Ausgabe außerhalbe des Wartethresholds liegt,
  // nutze sie als Distanz:
  if (abs(reading - center) > threshold) {
    distance = (reading - center);
  }

  // Die Y-Achse muss invertiert werden, um die Bewegung richtig anzuzeigen.
  if (axisNumber == 1) {
    distance = -distance;
  }

  // Gibt die Distanz für die Achse zurück
  return distance;
}

Anmerkungen und Warnungen

Wenn das Mouse.move()-Kommando benutzt wird, übernimmt der Arduino die Tastatur! Stelle sicher, dass du Kontrolle über die Tastatur hast, bevor du das Kommando verwendest. Ein Button, um die Funktion notfalls zu sperren, ist sinnvoll.

Siehe auch