Mouse.h проблема вернуть курсор в изначальную позицию.

Explorer
Offline
Зарегистрирован: 12.11.2014

Здравствуйте, делаю хреновину, которая будет кидать курсор в заданном пределе от изначального положения, затем возвращать в центр, где была изначально.. но проблема в том, что через некоторое время, улетает начальная точка и  "квадратная рандомная" область начинает гулять по экрану.
текущий код:
 

#include <Mouse.h>

void setup(){

  Mouse.begin();
  delay(15000);

}
void loop()
{
    int gx = random(100) - 50; //предел по Х, оно же и рандом
    int gy = random(100) - 50; //предел по У, оно же и рандом
    Mouse.move(gx, gy);
    delay(10);                           //замедление данного действа
    Mouse.move(-gx, -gy); delay(10); //замедление данного действа

}

Должно работать так:

при этом если долго подержать, должно "залить" в чёрный цвет квадрат... а по факту  получается вот что:

тут два образца.

 

Помогите пожалуйста в написании кода

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Если Вы думаете, что существует только одна единственная и неповторимая бибилиотека mouse, то Вы ошибаетесь - их 100500. Пока Вы не скажете, какой именно Вы пользуетесь - разговор ни о чём. Например, в той, что у меня есть функции move передуются обсолютные координаты, а значит у Вас написано всё совсем не так, как сказано словами. Так что давайте ссылку на библиотеку.

И кстати, даже если предположить, что move передаются не абсолютные координаты, а приращения - она у Вас должна заливать круг, но никак не квадрат.

Explorer
Offline
Зарегистрирован: 12.11.2014

ЕвгенийП пишет:

Если Вы думаете, что существует только одна единственная и неповторимая бибилиотека mouse, то Вы ошибаетесь - их 100500. Пока Вы не скажете, какой именно Вы пользуетесь - разговор ни о чём. Например, в той, что у меня есть функции move передуются обсолютные координаты, а значит у Вас написано всё совсем не так, как сказано словами. Так что давайте ссылку на библиотеку.

Вот реально, не знал. сколько вчера в поиск долбился всё речь об одной, встроенной. делаю на встроенной, полгода назад делал, не помню уже на какой версии IDE  но работало, а сейчас ни в какую.  делать перерывы в программировании, такое себе удовольствие...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, если на встроенной, то всё, как я сказал.

1. Вы передаёте абсолютные координаты, потому - с какого перепугу ей возвращаться в исходную точку? Вы просто лупите куда попало и все дела. Ну перевели Вы её в точку gx, gy, а потом в точку -gx, -gy и что? Начальная-то точка тут причём? Вы её даже не запоминаете нигде.

2. даже если бы это были приращения - она бы закрашивала круг, а не квадрат.

Explorer
Offline
Зарегистрирован: 12.11.2014

ЕвгенийП пишет:

Ну, если на встроенной, то всё, как я сказал.

а есть библиотеки с "обратной связью" ? если есть, то это вообще шикарно. только вот чтото подсказывает, без драйвера не обойтись

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А просто возвращаться каждый раз в 0, а не куда попало - никак?

Explorer
Offline
Зарегистрирован: 12.11.2014

ЕвгенийП пишет:

А просто возвращаться каждый раз в 0, а не куда попало - никак?

так сложилось, что после перемещения курсора это и есть 0, от которого будет отталкиваться следующее перемещение. если убрать инвертированное перемещение Mouse.move(-gx, -gy); то курсор будет летать по всему экрану.  а так, только в определенной области, но центр этой области съезжает по не ведомым причинам после обратного (инвертированного) перемещения в "изначальную" позицию, в кавычках потому, что изначальной для ардуины будет считаться любая позиция курсора, так как обратной связи нет.

в общем такое чувство, что идет какой то "срыв" работы и координата слегка уплывает. несколько раз делает нормально,  потом раз! и уплыло в случайную сторону, буквально на несколько едениц. скорость уменьшал до 100мс, всёравно уплывает

п.с. повторюсь, работает по принципу "шаг вперед, шаг назад" только длинна "шага" случайная

sadman41
Offline
Зарегистрирован: 19.10.2016

Может мышь дергаете, она и сносит координату, раз та относительная.

Explorer
Offline
Зарегистрирован: 12.11.2014

глянул что за цифры в значениях, искажений нет, а проскоки курсора фактически есть, дело либо в IDE, либо в железе, но пробую я на ардуино дуе и на леонардо. одинакого работает.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

А если увеличить задержки между вызовами - будут изменения?

Explorer
Offline
Зарегистрирован: 12.11.2014

DIYMan пишет:

А если увеличить задержки между вызовами - будут изменения?

походу нашел в чем проблема... потеря данных по усб, на домашнем компе проверил, всё работает как часы! подключал к передней панели. А на работе подключал через усб удлинитель, оно как бы всё работает, но проскакивают такие подлые, короткие лаги.

electra
Offline
Зарегистрирован: 31.10.2016

Всем привет! Использую скачанную библиотеку mouse.h , необходимо задать координату в которую придет курсор мыши и нажмет там на кномку. Использую команду mouse.move() и курсор просто движется, а можно как-то задать именно координату в которую он установится ? 

alchi
Offline
Зарегистрирован: 13.02.2012

Всем доброго времени суток! 

Подниму тему! Все тоже самое, как у автора в 1 посту.

Проблема актуальна. То что помогло автору не помогает! Может у кого есть идеи?

Контроллер Arduino DUE. Может быть в этом проблема?

alchi
Offline
Зарегистрирован: 13.02.2012

Всем привет! Возвращаюсь к предыдущему посту, может кому пригодиться.

Задача стояла смещать курсор на заданное значение при нажатии кнопки и запоминать суммарное смещение. При нажатии второй кнопки необходимо было возвращать курсор в исходное положение. Но все это не работает в виду того, что  Windows добавляете ускорение курсору... поэтому возврат в исходное положение не возможен. Всем спасибо!

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

alchi, ну а зачем тут ардуино? Пишите свою прогу под винду, вам будут доступны и движение мышки попиксельно и абсолютные координаты. Даже если не владеете языком программирования, то можно попробовать заколхозить какой нибудь скриптик на nncron например.