Описание
Метод перемещает указатель мыши на подсоединенном компьютере. Перемещения по экрану всегда задаются относительно текущего положения указателя. Перед использованием Mouse.move() необходимо вызвать метод Mouse.begin().
Предупреждение: при использовании функции Mouse.move() плата Arduino берет управление вашей мышью на себя, отключая настоящую. Поэтому, перед использованием этой команды убедитесь, что у вас есть возможность отключить эмуляцию мыши. С этой целью рекомендуется использовать какую-либо кнопку, позволяющую включать или выключать данную возможность.
Синтаксис
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;
}
Смотрите также:
Mouse.begin()
Mouse.click()
Mouse.end()
Mouse.press()
Mouse.release()
Mouse.isPressed()
Библиотеки Mouse и Keyboard
Справочник
Материалы взяты с официального сайта проекта Arduino и представлены по лицензии Creative Commons Attribution-ShareAlike 3.0 License.
Источник: http://arduino.cc/en/Reference/MouseMove |