Шановні друзі! Сайт знаходиться в процесі перекладу на солов'їну мову. Все буде Україна!

Mouse.move()

Описание

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

ВНИМАНИЕ: при использовании команды Mouse.move() Ардуино берет управление вашей мышью на себя! Поэтому, перед использованием этой команды убедитесь, что у вас есть возможность отключить Ардуино от управления мышью. С этой целью рекомендуется использовать какую-либо кнопку, позволяющую включать или выключать данную функцию.

Синтаксис

Mouse.move(xVal, yVal, wheel)

Параметры

xVal: величина, на которую следует переместить указатель вдоль оси x - signed char

yVal: величина, на которую следует переместить указатель вдоль оси y - signed char

wheel: величина смещения колеса прокрутки - signed char

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

нет

Пример

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 для x, 1 для y) 
  и преобразовывает считанное значение из входного диапазона в диапазон перемещений 
*/

int readAxis(int axisNumber) {
  int distance = 0;    // величина перемещения от центра диапазона

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

  // если текущее считанное значение превышает значения max или min данной оси,
  // то переприсваиваем max или min:
  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;
}

Смотрите также