Здравствуйте, гость ( Вход | Регистрация )

> Pilot + Arduino (Hardware clicker)
yamenko
сообщение 7.3.2020, 19:21
Сообщение #1


***

Novice
Сообщений: 79
Регистрация: 19.8.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 16.974
Возраст: 29



Добрый день.
Хочу представить вам аппаратный кликер на базе UOpilot.
Для начала вам необходима будет плата Arduino micro (Arduino Leonardo) обязательно с чипом Atmega 32u4. Другие не подойдут, так как не определяются системой как HID устройство, и придется долго настраивать аппаратную и программную составляющую.
Можете выбрать следующие:
(IMG:https://i.ibb.co/5GRGCDW/2020-03-07-18-38-55.png)(IMG:https://i.ibb.co/P1DgmDt/2020-03-07-18-40-05.png)
Как только вы заполучили свою новую плату, скачиваем и устанавливаем последнюю версию Arduino IDE с офф. сайта Arduino.cc
(IMG:https://i.ibb.co/HVM0nBK/2020-03-07-18-37-38.png)
Пробуем подключить, она должна у вас определится в устройствах как Mikro или Leonardo.
(IMG:https://i.ibb.co/SRnMV1S/2020-03-07-18-44-57.png)
Если не появляется, тогда устанавливаем драйвера, для не оригинальных плат с алиэкспресс нужен спец драйвер CH340 (ch341ser), пробуйте с разных сайтов, даже с одинаковым названием, они почему-то разные.
Вот тут можно посмотреть драйвер
Запоминаем СОМ порт!
Открываем Arduino IDE
Настраиваем нашу плату:
(IMG:https://i.ibb.co/4dj9RvK/2020-03-07-18-47-26.png)(IMG:https://i.ibb.co/YbXd4MS/2020-03-07-18-48-38.png)
Закидываем скретч отсюда: https://forum.uokit.com/index.php?s=&sh...st&p=436373
устаревший скетч с ошибкой. Используйте скетч из ссылки выше.
Код
#include <Keyboard.h>
int i = 0;
int trigerKey = 0;
int lengthStr = 0;
int key[20];
int tmDelayValue;
String tmDelayStr;

void setup() {
  Serial.begin(9600);
  Keyboard.begin();
}

void loop() {
  // Собираем информацию из порта
  while (Serial.available()) {
    key[i++] = Serial.read();
    delay(5);
  }
  // Триггер, что данные пришли
  if (i != 0 && lengthStr == 0){
    lengthStr = i;
    i = 0;
  }
  
  if (lengthStr != 0){
    
    for (i = 0; i <= lengthStr; i++){
      delay(5);
//Находим задержку с которой необходимо нажимать кнопки
      if (trigerKey == 0){
        if (key[i] == 124){
          tmDelayValue = tmDelayStr.toInt();
          trigerKey = 1;
          i++;
        }
        else {
          tmDelayStr += char (key[i]);
        }
      }

//Находим и нажимаем спец кнопки если необходимо
      if (trigerKey == 1){
        if (key[i] == 94){Keyboard.press(KEY_LEFT_CTRL);}    //94 - символ "^"
        if (key[i] == 64){Keyboard.press(KEY_LEFT_ALT);}     //64 - символ "@"
        if (key[i] == 126){Keyboard.press(KEY_LEFT_SHIFT);}  //126 - символ "~"
        if (key[i] == 124){trigerKey = 2; i++;}              //124 - символ "|"
      }

//Нажимаем по очереди остальные кнопки с задержкой
      if (trigerKey == 2){
        delay(tmDelayValue);
        Keyboard.print(char (key[i]));
      }
    }
// Сбрасываем все
    Keyboard.releaseAll();
    i = 0;
    trigerKey = 0;
    lengthStr = 0;
    tmDelayStr = "";
  }
}

заливаем его в плату.
(IMG:https://i.ibb.co/W50GRnL/2020-03-07-18-50-19.png)
Должно написать «Загрузка завершена»

Теперь переходим в Пилот
Добавляем функцию
Код
--lua
local function sendKey (symbol)
    file = io.open("COM7","w")  --меняем только номер COM порта, остальное не трогаем
    file:write(symbol)
    file:close()
end

Пользоваться так: sendKey ("1000|^|axv")
пишем в кавычках
1. До первой вертикальной черты это задержка между каждым нажатием кнопок в мс.
2. После первой черты и до второй это спец символы (~@^, такие как настроены в Пилоте, другие не используйте так как ничего все равно работать не будет), если символы не нужны просто удалите их, 2 вертикальные черты обязательны!!!
3. Набор символов которые необходимо нажать (каждая кнопка будет нажиматься через заданный интервал), русские символы не работают!!!
PS в данном примере CTRL+a, CTRL+x, CTRL+v, это чтобы вы могли проверить правильно ли работает или нет.

Сообщение отредактировал DarkMaster - 9.12.2020, 15:34
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
cirus
сообщение 8.3.2020, 11:50
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26969
Пользователь №: 16.971
Возраст: 29



Прикрепленный файл  arduino.zip ( 7,07 килобайт ) Кол-во скачиваний: 822

Начало

Arduino позволяет эмулировать нажатия клавиш клавиатуры и мыши, в том числе в приложениях, которые блокируют нажатия.
Может поворачивать камеру в шутерах и играх, в которых камера поворачивается с зажатой правой кнопкой мыши.
Работает только с активным окном.

Пилот версии 2.41 или выше. Запускать от администратора.
Извлечь архив, файл arduino.lua закинуть в папку, где находится exe пилота. Скетч загрузить в ардуино.
Для работы функций мыши нужно в настройках мыши снять галочку 'Включить повышенную точность установки указателя'.
В функцию get_port (2341, 8036) нужно передавать vid и pid ардуино. Узнать их можно в Arduino IDE, пункт меню 'Инструменты', 'Получить информацию о плате'.
При переполнении буфера, хотя такого не должно быть, 3 секунды будет гореть встроенный светодиод L. В этом случае нужно увеличить паузы между нажатиями клавиш мыши/клавиатуры.
Все координаты в командах мыши указывать абсолютные, т. е. относительно левого верхнего угла экрана.

Список функций

get_port (vid, pid) -- узнать в каком com порте находится ардуино

set_delay_key (ms) -- установить задержку нажатий клавиатуры
set_delay_mouse (ms) -- установить задержку нажатий мыши
set_delay_mousemove(ms) -- установить паузу в мсек между каждым шагом перемещения курсора, чем меньше, тем быстрее перемещается курсор
set_offset_mousemove(step) -- шаг перемещения курсора от 1 до 127, чем больше, тем быстрее перемещается курсор.
set_random_delay_key(random) -- рандом от 0 до 9 мсек между нажатием и отпусканием клавиш клавиатуры
set_random_delay_mouse(random) -- рандом от 0 до 4 мсек между нажатием и отпусканием клавиш

key (code) -- нажать клавишу клавиатуры
text (text) -- отослать текст, в том числе русские символы
key_down (code) -- зажать (не отжимая) клавишу клавиатуры
key_up (code) -- отжать клавишу клавиатуры

mouse.move (x, y) -- переместить мышь
mouse.click (x, y, button) -- кликнуть мышью, button должен содержать код клавиши мыши
mouse.left (x, y) -- клик левой кнопкой
mouse.right (x, y) -- клик правой кнопкой
mouse.middle (x, y) -- клик средней кнопкой
mouse.dbl (x, y, button) -- двойной клик, button должен содержать код клавиши мыши
mouse.left_dbl (x, y) -- двойной клик левой кнопкой мыши
mouse.right_dbl (x, y) -- двойной клик правой кнопкой мыши
mouse.middle_dbl (x, y) -- двойной клик средней кнопкой мыши
mouse.down (x, y, button) -- зажать (не отжимая) кнопку мыши, button должен содержать код клавиши мыши
mouse.left_down (x, y) -- зажать (не отжимая) левую кнопку мыши
mouse.right_down (x, y) -- зажать (не отжимая) правую кнопку мыши
mouse.middle_down (x, y) -- зажать (не отжимая) среднюю кнопку мыши
mouse.up (x, y, button) -- отжать кнопку мыши, button должен содержать код клавиши мыши
mouse.left_up (x, y) -- отжать левую кнопку мыши
mouse.right_up (x, y) -- отжать правую кнопку мыши
mouse.middle_up (x, y) -- отжать среднюю кнопку мыши
mouse.drag (x, y, x2, y2) -- зажать левую кнопку мыши в точке x y, переместить в точку x2 y2
mouse.wheel_up (x, y, count) -- прокручивание колёсика мыши вверх, count - насколько щелчков прокрутить
mouse.wheel_down (x, y, count) -- прокручивание колёсика мыши вниз, count - насколько щелчков прокрутить

Список многосимвольных клавиш

mouse_left_button = 1
mouse_right_button = 2
mouse_middle_button = 4

left_ctrl = 0x80
left_shift = 0x81
left_alt = 0x82
left_gui = 0x83
right_ctrl = 0x84
right_shift = 0x85
right_alt = 0x86
right_gui = 0x87
up_arrow = 0xDA
down_arrow = 0xD9
left_arrow = 0xD8
right_arrow = 0xD7
backspace = 0xB2
tab = 0xB3
enter = 0xB0
esc = 0xB1
insert = 0xD1
delete = 0xD4
page_up = 0xD3
page_down = 0xD6
home = 0xD2
["end"] = 0xD5
caps_lock = 0xC1
f1 = 0xC2
f2 = 0xC3
f3 = 0xC4
f4 = 0xC5
f5 = 0xC6
f6 = 0xC7
f7 = 0xC8
f8 = 0xC9
f9 = 0xCA
f10 = 0xCB
f11 = 0xCC
f12 = 0xCD
F1 = 0xC2
F2 = 0xC3
F3 = 0xC4
F4 = 0xC5
F5 = 0xC6
F6 = 0xC7
F7 = 0xC8
F8 = 0xC9
F9 = 0xCA
F10 = 0xCB
F11 = 0xCC
F12 = 0xCD

Пример использования клавиатуры

Код
--lua
local hw = require'arduino'
hw.com = hw.get_port (2341, 8036)    -- указать vid и pid ардуино
if hw.com < 1 then   -- если номер порта меньше 1
     log ('error = ' .. tostring(hw.com))    -- код ошибки, если 0 значит устройство с указанными vip и pid не найдено
     end_script ()
end
hw.set_delay_key (20)     -- установить паузу между нажатиями клавиш клавиатуры
hw.set_random_delay_key(10)  -- установить рандом между нажатием и отпускание клавиш
-- т. е. между нажатием и отпусканием клавиши будет пауза от 20 до 29 мсек

wait (3000)    -- пауза 3 секунды чтобы переключиться на нужное окно
hw.key ('k')    -- нажать клавишу 'k'
hw.key (hw.enter)  -- нажать 'Enter'

wait (1000)   -- пауза 1 сек.

hw.key_down ('s')   -- зажать клавишу 's'
wait (3000)         -- пауза 3 сек., при этом клавиша будет зажата
hw.key_up ('s')     -- отпустить клавишу 's'
hw.key (hw.enter)   -- нажать 'Enter'

hw.text ('Hello Привет')  -- напечатать текст
hw.key ('V')    -- нажать Shift+'v'


Пример использования мыши
Код
--lua
local hw = require'arduino'
hw.com = hw.get_port (2341, 8036)    -- указать vid и pid ардуино
if hw.com < 1 then   -- если номер порта меньше 1
     log ('error = ' .. tostring(hw.com))    -- код ошибки
     end_script ()
end
hw.set_delay_mouse (20)   -- установить паузу между нажатиями клавиш мыши
hw.set_offset_mousemove(4)  -- шаг перемещения курсора
hw.set_random_delay_mouse(10)  -- установить рандом между нажатиями клавиш мыши
-- т. е. между нажатием и отпусканием кнопки мыши будет пауза от 20 до 29 мсек.

hw.mouse.left (200, 100)      -- клик левой кнопкой мыши в координатах 200, 100
hw.mouse.right (200, 100)     -- клик правой кнопкой мыши
wait (3000)                   -- пауза 3 секунды
hw.mouse.left_dbl (35, 35)    -- двойной клик левой кнопкой мыши
wait (2000)
hw.mouse.left_down (200, 200) -- зажать левую кнопку мыши
wait(500)
hw.mouse.left_up (900, 300)   -- отпустить левую кнопку мыши

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
yamenko   Pilot + Arduino (Hardware clicker)   7.3.2020, 19:21
yamenko   С этой штукой будет нажимать клавиши в обход game...   8.3.2020, 19:26
AK_sata   Прива вопрос по поводу этого Как только вы заполуч...   30.8.2020, 20:13
cirus   Перейти по ссылке https://www.arduino.cc/en/Main/...   30.8.2020, 22:02
DarkMaster   yamenko, памятник вам надо.   19.9.2020, 5:24
Crocotea   Купил приблуду, но клики не проходили Благодаря Da...   10.11.2020, 15:32
DarkMaster   Ирония в том, что код оказался изначально рабочим...   10.11.2020, 15:34
Crocotea   при запуске скрипта пилота, после нескольких запус...   10.11.2020, 15:48
Crocotea   Эх тема совсем никому не интересна(( Подскажите пж...   16.11.2020, 9:35
DarkMaster   интересна, но у меня есть дела и помимо нее. В час...   16.11.2020, 10:24
Cockney   Накидал вариант. Насколько рабочий не знаю, не мог...   16.11.2020, 11:48
Crocotea   Накидал вариант. Насколько рабочий не знаю, не мо...   17.11.2020, 15:04
Cockney   Так результат по парсингу Пишет ошибку в строчке ...   17.11.2020, 15:14
Crocotea   поправил Так попробовал и записал видосик Sfd3U...   17.11.2020, 17:36
DarkMaster   Cockney, не будет ли правильным использовать какой...   16.11.2020, 15:53
Cockney   Да можно все, разумеется. У меня нет ни устройства...   16.11.2020, 16:20
Cockney   Очередная правка, выношу код сюда, ибо старый пост...   17.11.2020, 18:37
Crocotea   Очередная правка, выношу код сюда, ибо старый пос...   17.11.2020, 18:45
Cockney   #include <Keyboard.h> #include <stdl...   18.11.2020, 12:50
Crocotea   [spoiler=Версия №4] [code] #include <Keyboard...   18.11.2020, 17:30
DarkMaster   Предлагаю в: --lua local function sendKey (sym...   18.11.2020, 18:15
Cockney   Оно и сейчас себя ожидаемо ведет. Мы прочитали пер...   18.11.2020, 18:35
DarkMaster   Оно просто в буффер накидывает быстрее, чем ты счи...   18.11.2020, 18:56
Cockney   Я вроде примерно тоже самое и описал. Мои соображе...   18.11.2020, 19:15
DarkMaster   Ну дык и я о том же. Едиственное экран на всяких с...   18.11.2020, 19:21
Crocotea   sendKey ("1||4") wait(100)...   18.11.2020, 21:24
DarkMaster   ибо луа   18.11.2020, 21:45
Crocotea   Подскажите, при параллельном запуске 2 скриптов во...   19.11.2020, 0:50
DarkMaster   Скан коды клавиш для этого нужно смотреть. Ну и д...   19.11.2020, 2:29
Crocotea   Скан коды клавиш для этого нужно смотреть. Ну и д...   21.11.2020, 4:23
DarkMaster   sendKey ("100||"..string.char (0x1)) ка...   21.11.2020, 4:39
Crocotea   sendKey ("100||"..string.char (0x1)) ка...   21.11.2020, 5:18
Cockney   Вообще не точно.... Теперь задержка указывается по...   22.11.2020, 2:18
DarkMaster   Ну и предвосхищая возможные вопросы/проблемы реком...   22.11.2020, 4:17
cirus   Неплохо бы проверять открылся ли порт, если не отк...   22.11.2020, 4:34
Crocotea   Неплохо бы проверять открылся ли порт, если не от...   22.11.2020, 12:40
DarkMaster   Тогда надо и возвращать ошибку и мониторить возвр...   22.11.2020, 4:37
cirus   На плате лампочки мигают когда что-то приходит в ...   22.11.2020, 4:46
Cockney   что именно не так работает ?   22.11.2020, 13:31
Crocotea   что именно не так работает ? Стоит вопрос как н...   22.11.2020, 13:53
DarkMaster   https://github.com/arduino-libraries/Keyboa.../src...   22.11.2020, 15:07
cirus   Архив распаковать, файл Arduino.lua положить в пап...   22.11.2020, 18:37
Crocotea   Архив распаковать, файл Arduino.lua положить в па...   22.11.2020, 23:44
Cockney   Архив распаковать, файл Arduino.lua положить в па...   23.11.2020, 0:11
Cockney   Архив распаковать, файл Arduino.lua положить в па...   25.11.2020, 18:50
DarkMaster   Так а с чего оно писать будет? Это ескейп, которы...   22.11.2020, 23:49
Crocotea   Так а с чего оно писать будет? Это ескейп, которы...   22.11.2020, 23:51
cirus   В архиве скетч, его вообще-то загрузить надо в ус...   22.11.2020, 23:53
Crocotea   В архиве скетч, его вообще-то загрузить надо в ус...   22.11.2020, 23:58
DarkMaster   cirus, теперь еще и с мышью. Круть. К нижеследующе...   23.11.2020, 1:09
cirus   Ну да, куда ещё-то. И загрузить в устройство. Da...   23.11.2020, 1:17
Crocotea   Ну да, куда ещё-то. И загрузить в устройство. Da...   23.11.2020, 14:07
DarkMaster   Хз. Как по мне смысла нет. Ничего вычислительно н...   23.11.2020, 2:00
cirus   key('S') напишет большую букву. Если над...   23.11.2020, 14:45
Crocotea   key('S') напишет большую букву. Если над...   23.11.2020, 15:21
DarkMaster   а text не работает что ли? Не выдержала душа) Убр...   23.11.2020, 17:55
DarkMaster   Обновлен Arduino.lua   23.11.2020, 18:39
DarkMaster   на чьем скетче? любом скетче [youtube]j1_IcoJG8...   23.11.2020, 20:28
Crocotea   на чьем скетче? любом скетче j1_IcoJG8vQ Достаточ...   23.11.2020, 20:55
Crocotea   Столкнулся с проблемой. При загрузке ЛЮБОГО парсин...   23.11.2020, 20:41
DarkMaster   какой именно скетч и какой именно arduino.lua? так...   23.11.2020, 21:31
Crocotea   какой именно скетч и какой именно arduino.lua? та...   23.11.2020, 22:56
DarkMaster   вы противоречите сами себе. Пожалуйста, подробне...   23.11.2020, 23:08
Crocotea   вы противоречите сами себе. Пожалуйста, подробнее...   23.11.2020, 23:09
DarkMaster   у меня блочатся внешние элементы. могу лишь догад...   23.11.2020, 23:15
Crocotea   у меня блочатся внешние элементы. могу лишь догад...   23.11.2020, 23:19
Crocotea   часть иероглифов, которые спамятся при старте П. ...   23.11.2020, 23:44
DarkMaster   Порт не спутали? Может нумерация изменилась. Текст...   23.11.2020, 23:52
Crocotea   Порт не спутали? Может нумерация изменилась. Текс...   24.11.2020, 0:05
DarkMaster   попробуй в чистом luajit, не в пилоте. можно взять...   24.11.2020, 0:09
cirus   Отправить команду в порт, с пилота или любой друг...   24.11.2020, 2:00
Crocotea   Отправить команду в порт, с пилота или любой друг...   24.11.2020, 12:35
DarkMaster   вау. а считать ответ кмд может?   24.11.2020, 2:35
cirus   Наверное может, не знаю.   24.11.2020, 11:27
cirus   Значит не в пилоте проблема. Причину спама не зна...   24.11.2020, 12:47
Crocotea   так же происходят перемещение и нажатия клавиш мыш...   24.11.2020, 13:51
cirus   Загрузите этот скетч: [code]#include <Keyboar...   24.11.2020, 14:22
Crocotea   Загрузите этот скетч: [spoiler=Скетч][code]#inclu...   24.11.2020, 17:17
DarkMaster   Господа, а меня тут мысль, так сказать посетила......   24.11.2020, 15:13
Crocotea   Есть 1 важное наблюдение запустил на ноуте то же с...   24.11.2020, 17:28
cirus   Порты могут меняться при загрузке скетча, почему ...   25.11.2020, 2:12
DarkMaster   Потому что это юсб и ком порты там виртуальные. В...   25.11.2020, 2:34
Cockney   В последней версии такого нет.   25.11.2020, 3:09
DarkMaster   Действительно... Crocotea, а нафига старую верси...   25.11.2020, 6:17
Crocotea   Действительно... Crocotea, а нафига старую версию ...   25.11.2020, 15:20
cirus   В ней надо небольшие правки вносить, т. к. остала...   25.11.2020, 15:09
DarkMaster   все обращения через hw. какую ошибку?   25.11.2020, 17:14
Crocotea   все обращения через hw. какую ошибку? 17:23...   25.11.2020, 17:24
DarkMaster   чего? файл arduino точно мой и на месте лежит? та...   25.11.2020, 18:23
Crocotea   чего? файл arduino точно мой и на месте лежит? та...   25.11.2020, 18:47
DarkMaster   Crocotea, Поправил. https://forum.uokit.com/index....   25.11.2020, 20:21
Cockney   Cockney, откуда этот кусок кода? скетч cirus. ...   25.11.2020, 21:31
Crocotea   Crocotea, Поправил. https://forum.uokit.com/index...   25.11.2020, 22:51
DarkMaster   Текст ошибки. Не может быть той же - там в этой с...   25.11.2020, 23:01
Crocotea   Текст ошибки. Не может быть той же - там в этой с...   25.11.2020, 23:07
DarkMaster   все через hw. hw.com = 8 hw.set_delay_key = 20 hw....   26.11.2020, 0:01
cirus   Пример использования: [code]--lua local hw = req...   26.11.2020, 2:15
Crocotea   Пример использования: [code]--lua local hw = re...   26.11.2020, 12:13
DarkMaster   я еще могу понять чем тебе не угодили _return и _e...   26.11.2020, 5:50
2 страниц V  1 2 >


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 24.6.2024, 6:27
Designed by Nickostyle