Постоянно перемещайте курсор мыши с задержками и нажимайте, когда аналоговое значение превышает 300. Arduino Pro Micro

Я понимаю, что это запоздалый ответ, но, глядя через developer.android.com, кажется, что кнопка Toggle идеально подходит для вашей ситуации.

Toggle button image [/g1] http://developer.android.com/guide/topics/ui/controls/togglebutton.html

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


Теперь, если вы хотите перейти с окончательным редактированием и иметь эффект «ореола» вокруг ваши кнопки, вы можете использовать другой настраиваемый селектор, чтобы сделать именно это.



     
        
            
            
            
        
    
     
        
            
            
            
        
     

0
задан M. R. 6 March 2019 в 08:06
поделиться

1 ответ

Реализация задержки в 5 секунд, измеряющая прошедшие миллисекунды и считывание аналогового значения во время ожидания, выглядит следующим образом:

startTime = millis();
while(millis()-startTime < 5000) {
    sensorValue = analogRead(A0);
    if (sensorValue >= 300) {
        AbsMouse.press(MOUSE_LEFT);
        AbsMouse.release(MOUSE_LEFT);
    }
}

Это имеет два недостатка, которые вам придется решить при необходимости. Первый заключается в том, что события щелчка будут выполняться, пока значение остается выше 300 (то есть оно может щелкать более одного раза). Вторая проблема заключается в том, что это не точная задержка в 5 секунд, поскольку она может иметь дрожание из-за кода, выполняемого внутри блока while.

Другой вариант, как вы упомянули, - использовать прерывания по таймеру для достижения более точной задержки. Используя такую ​​библиотеку, как TimerOne , это выглядит так (вдохновлено примерами библиотек и модифицировано для выполнения каждые 5 секунд):

#include <TimerOne.h>

void setup(void) {
  Timer1.initialize(5000000);
  Timer1.attachInterrupt(fiveSeconds);
}

void fiveSeconds(void) {
    // do stuff
}

Функция fiveSeconds должна выполняться каждые 5 секунд, с большей точностью, чем подход millis().

Теперь вам нужно добавить код в эту функцию, чтобы достичь того, что вы хотите сделать. Я бы предложил использовать loop() для считывания аналогового значения и щелчка, а также прерывание для перемещения курсора мыши, но ваш подход может быть другим.

0
ответ дан Guille 6 March 2019 в 08:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: