Mouse.move()

Leírás

Mozgatja a kurzort a csatlakoztatott számítógépen. A képernyőn megjelenő mozgás mindig a kurzor aktuális helyéhez viszonyítva történik. A Mouse.move() használata előtt meg kell hívni a Mouse.begin() függvényt.

Szintaxis

Mouse.move(xVal, yVal, wheel)

Paraméterek

xVal: mennyit kell mozgatni az x tengely mentén. Engedélyezett adattípusok: signed char.
yVal: mennyit kell mozgatni az y tengely mentén. Engedélyezett adattípusok: signed char.
wheel: mennyit mozgott az egérgörgő. Engedélyezett adattípusok: signed char.

Visszatérési érték

Nincs

Példa

#include <Mouse.h>

const int xAxis = A1;         // analóg érzékelő az X tengelyhez
const int yAxis = A2;         // analóg érzékelő az Y tengelyhez

int range = 12;               // X vagy Y mozgás kimeneti tartománya
int responseDelay = 2;        // az egér válaszkésleltetése, ms-ban
int threshold = range / 4;    // nyugalmi küszöb
int center = range / 2;       // nyugalmi helyzet értéke
int minima[] = {1023, 1023};  // tényleges analogRead minimum {x, y}-hoz
int maxima[] = {0, 0};        // tényleges analogRead maximum {x, y}-hoz
int axis[] = {xAxis, yAxis};  // pin számok {x, y}-hoz
int mouseReading[2];          // utolsó egérérték {x, y}-hoz


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

void loop() {
  // olvassa el és skálázza a két tengelyt:
  int xReading = readAxis(0);
  int yReading = readAxis(1);

  // mozgasd az egeret:
  Mouse.move(xReading, yReading, 0);
  delay(responseDelay);
}

/*
  beolvas egy tengelyt (0 vagy 1 x vagy y esetén), és az analóg bemeneti tartományt
  0 és <range> közötti tartományra skálázza
*/

int readAxis(int axisNumber) {
  int distance = 0; // távolság a kimeneti tartomány közepétől

  // az analóg input olvasása:
  int reading = analogRead(axis[axisNumber]);

  // az aktuális leolvasás meghaladja ennek a tengelynek a max vagy min értékét,
  // állítsa vissza a max vagy min értéket:
  if (reading < minima[axisNumber]) {
    minima[axisNumber] = reading;
  }
  if (reading > maxima[axisNumber]) {
    maxima[axisNumber] = reading;
  }

  // az olvasott leképezése az analóg bemeneti tartományból a kimeneti tartományra: 
  reading = map(reading, minima[axisNumber], maxima[axisNumber], 0, range);

  // ha a kimeneti érték kívül esik a
  // nyugalmi helyzet küszöbén, használja:
  if (abs(reading - center) > threshold) {
    distance = (reading - center);
  }

  // az Y tengelyt meg kell fordítani
  // a mozgás megfelelő leképezéséhez:
  if (axisNumber == 1) {
    distance = -distance;
  }

  // visszaadja ennek a tengelynek a távolságát:
  return distance;
}

Megjegyzések és figyelmeztetések

Amikor a Mouse.move() parancsot használja, az Arduino átveszi az egeret! A parancs használata előtt győződjön meg arról, hogy rendelkezik a vezérléssel. Működik az egérvezérlési állapot átváltására szolgáló nyomógomb.

Lásd még