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; }