А теперь поподробнее, с чего начинать, что купить, как прошить, как запустить...
1. Нам нужен сам контроллер ардуино. Подойдут только те, которые определяются на ПК как мышь и клавиатура. Те, о которых я в курсе - Arduino Micro, Arduino Pro Micro, Arduino Leonardo.
2. Подключаем наш девайс к ПК в любой USB. Смотрим в диспетчер устройств. Должно появиться три новых устройства - клавиатура HID, HID совместимая мышь, устройство с последовательным интерфейсом USB (COM). Номер COM порта запоминаем.
3. Далее нужно прошить наш контроллер. Для этого нужен софт. Качаем с оффсайта ардуино последнюю версию Arduino IDE
https://www.arduino.cc/en/software . Я использую портативную версию для windows - "Windows ZIP file" . Она не требует установки, просто распаковать из архива, и готово, можно пользоваться.
4. Настраиваем IDE под наш контроллер. Меню - инструменты - плата: - Arduino Micro, либо Leonardo в зависимости от того что там у вас. Меню - инструменты - порт: - выбираем порт к которому подключен контроллер.
5. Все, можно загружать скетч. Берем тот что я написал, либо пишите свой. Мой:
#include <Mouse.h>
#include <Keyboard.h>
unsigned long par = 0;
String instring = "";
int kmfunct = 0;
int x_cor = 0;
int y_cor = 0;
int mult = 0;
int inchar = 0;
void setup() {
Serial.begin(9600);
Mouse.begin();
Keyboard.begin();
}
void loop() {
while(Serial.available() > 0){
inchar = Serial.read();
if (isDigit(inchar)) {
instring += (char)inchar;
}
}
par = instring.toInt();
instring = "";
if (par > 0) {
kmfunct = par/16777216 ;
switch (kmfunct) {
case 1: //Mouse.click
Mouse.click(par - kmfunct*16777216);
break;
case 2: // Mouse.move
x_cor = (par - kmfunct*16777216)/256;
y_cor = par - x_cor*256 - kmfunct*16777216;
if (x_cor > 127) x_cor = 127 - x_cor;
if (y_cor > 127) y_cor = 127 - y_cor;
Mouse.move(x_cor, y_cor, 0);
break;
case 3: //Mouse.press
Mouse.press(par - kmfunct*16777216);
break;
case 4: //Mouse.release
Mouse.release(par - kmfunct*16777216);
break;
case 5: //Mouse.dblclick
Mouse.click(par - kmfunct*16777216);
delay(50);
Mouse.click(par - kmfunct*16777216);
break;
case 6: //wheel.down.up
mult = par - kmfunct*16777216;
if (mult > 127) mult = 127 - mult;
Mouse.move(0, 0, mult);
case 7: // Keyboard.keydown
Keyboard.press(par - kmfunct*16777216);
break;
case 8: // Keyboard.keyup
Keyboard.release(par - kmfunct*16777216);
break;
case 9: // Keyboard.keypress
Keyboard.write(par - kmfunct*16777216);
break;
}
}
par = 0;
}
Копируете и вставляете в редактор arduino. Жмете кнопку "проверить", пойдет компиляция скетча. После завершения в логе будет что-то типа
Скетч использует 7426 байт (25%) памяти устройства. Всего доступно 28672 байт.
Глобальные переменные используют 265 байт (10%) динамической памяти, оставляя 2295 байт для локальных переменных. Максимум: 2560 байт.
Значит все отлично, жмем кнопку "загрузка" и ждем пока скетч загрузится в контроллер. Если все в норме, то по итогу в логе будет: загрузка завершена, и тоже самое что и после проверки.
6. Контроллер готов и ждет команды из COM порта. Для отправки сообщения в наш порт я написал DLL библиотеку "micro_com.dll". Берем во вложении первого поста, либо вот с ядиска
https://disk.yandex.ru/d/YuMXDEFLhWiD6A . Качаем (либо копируем) библиотеку с процедурами мыши и клавиатуры для Clickermann "Arduino_mouse_keyboard.cms" , во вложении, либо код из поста выше, либо с ядиска
https://disk.yandex.ru/d/kmqlsabjb4RJvg . Кидаем эти два файла в одну папку. Открываем "Arduino_mouse_keyboard.cms" и прописываем в переменную $com номер порта, к которому подключена ардуина.
7. Создаем наш основной скрипт, либо редактируем уже существующий. Подключаем в него "Arduino_mouse_keyboard.cms".
#include "Arduino_mouse_keyboard.cms"
Все процедуры, которые я пока написал:
Клавиатурные действия пока будут работать только на бета версии v4.14.003 beta x32 http://crapware.aidf.org/forum/index.php?topic=356.0 . В будущем напишу чтоб работали на старших версиях.Будущее:Обновленная библиотека для всех версий (кроме х64) в этом посте http://crapware.aidf.org/forum/index.php?topic=5529.msg36250#msg36250 , берем оттуда и пользуемся клавиатурой полноценно!!!//micro_move ($x_cor, $y_cor)
//micro_lclick ($x_cor, $y_cor)
//micro_rclick ($x_cor, $y_cor)
//micro_mclick ($x_cor, $y_cor)
//micro_ldown ($x_cor, $y_cor)
//micro_rdown ($x_cor, $y_cor)
//micro_mdown ($x_cor, $y_cor)
//micro_lup ($x_cor, $y_cor)
//micro_rup ($x_cor, $y_cor)
//micro_mup ($x_cor, $y_cor)
//micro_dblclick ($x_cor, $y_cor)
//micro_wheeldown ($mult)
//micro_wheelup ($mult)
// вместо $char_ASCII писать не код клавиши, а символ ASCII.
// в ардуино как-то тупо сделали клавиатурные нажатия :/
// пока поддерживают только печатные символы, в будущем добавлю подпрограмму для клавиш-модификаторов.
//micro_keydown ($char_ASCII)
//micro_keyup ($char_ASCII)
//micro_keypress ($char_ASCII)
Ну и для проверки можно подергать курсором. Пишем к примеру такой код:
#include "Arduino_mouse_keyboard.cms"
wait(2)
micro_move (100, 100)
wait(2)
micro_move (500, 500)
wait(2)
micro_move (500, 100)
wait(2)
micro_move (100, 100)
halt
Жмем "применить" и сохраняем скрипт в папку с "micro_com.dll" и "Arduino_mouse_keyboard.cms". Запускаем и смотрим как курсор двигается по прописанным координатам.
8. Радуемся.
Если курсор не двигается, то ищем где мы накосячили. DLL может помочь в этом. Функция из библиотеки возвращает код, сообщая, на каком моменте остановилась работа по общению с COM портом. Если все в норме, функция должна возвратить "5"
#include "Arduino_mouse_keyboard.cms"
wait(2)
micro_move (100, 100)
print($_return1) //должно быть "5", иначе - пишите в этой теме, и подумаем в чем ошибка.
halt
Подробно о библиотеках Mouse и Keyboard для ардуино тут -
https://doc.arduino.ua/ru/prog/MouseKeyboard либо на оффсайте на английском.
Коды клавиш-модификаторов тут -
https://doc.arduino.ua/ru/prog/KeyboardModifiers . Для них нужно будет писать отдельную подпрограмму, либо вызывать индивидуально.
DLL написана для х32 систем, соответственно версия кликермана должна быть х32!!!
Если у вас есть деньги на контроллер, то и пару копеек на развитие проекта не пожалейте. Вон, смотрю место на хостинге походу закончилось , вложения не работают. Реквизиты тут http://crapware.aidf.org/page/clickermann .