Mouse.move()

Описание

Перемещает курсор на подключённом компьютере. Перемещение на экране всегда задаётся относительно текущего положения курсора. Перед использованием Mouse.move() необходимо вызвать Mouse.begin().

Синтаксис

Mouse.move(xVal, yVal, wheel)

Параметры

  • xVal: величина перемещения по оси X. Допустимые типы данных: signed char.

  • yVal: величина перемещения по оси Y. Допустимые типы данных: signed char.

  • wheel: величина прокрутки колеса. Допустимые типы данных: signed char.

Возвращаемое значение

Ничего.

Пример кода

#include <Mouse.h>

const int xAxis = A1;         //аналоговый датчик для оси X
const int yAxis = A2;         // аналоговый датчик для оси Y

int range = 12;               // диапазон выходного перемещения по X или Y
int responseDelay = 2;        // задержка реакции мыши, мс
int threshold = range / 4;    // порог покоя
int center = range / 2;       // значение положения покоя
int minima[] = {1023, 1023};  // фактические минимумы analogRead для {x, y}
int maxima[] = {0, 0};        // фактические максимумы analogRead для {x, y}
int axis[] = {xAxis, yAxis};  // номера пинов для {x, y}
int mouseReading[2];          // итоговые показания мыши для {x, y}


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

void loop() {
  // считать и масштабировать две оси:
  int xReading = readAxis(0);
  int yReading = readAxis(1);

  // переместить мышь:
  Mouse.move(xReading, yReading, 0);
  delay(responseDelay);
}

/*
  считывает ось (0 или 1 для x или y) и масштабирует
  диапазон аналогового входа в диапазон от 0 до <range>
*/

int readAxis(int axisNumber) {
  int distance = 0; // расстояние от центра выходного диапазона

  // считываем аналоговый вход:
  int reading = analogRead(axis[axisNumber]);

  // если текущее показание превышает максимум или минимум для этой оси,
  // переустанавливаем максимум или минимум:
  if (reading < minima[axisNumber]) {
    minima[axisNumber] = reading;
  }
  if (reading > maxima[axisNumber]) {
    maxima[axisNumber] = reading;
  }

  // отображаем показание из диапазона аналогового входа в выходной диапазон:
  reading = map(reading, minima[axisNumber], maxima[axisNumber], 0, range);

  // если выходное показание выходит за пределы
  // порога положения покоя, используем его:
  if (abs(reading - center) > threshold) {
    distance = (reading - center);
  }

  // ось Y нужно инвертировать, чтобы
  // правильно отобразить движение:
  if (axisNumber == 1) {
    distance = -distance;
  }

  // вернуть расстояние для этой оси:
  return distance;
}

Примечания и предупреждения

Предупреждение

Когда вы используете команду Mouse.move(), плата Arduino перехватывает управление вашей мышью! Убедитесь, что вы можете сохранить контроль, прежде чем использовать эту команду. Эффективное решение — добавить кнопку для переключения состояния управления мышью.

См. также