Что там с типами переменных в мануале наверно напутано, пробую напрямую без переменных, должно двигать:
#include "Keyboard.h"
#include "Mouse.h"
String instring = "";
unsigned long val = 536902177; // создаем переменную в 4 байта
int kmfunct = 0;
int click_par = 0;
char x_cor = 0;
char y_cor = 0;
void setup() {
Serial.begin(9600);
Mouse.begin();
Keyboard.begin();
}
void loop() {
////////////////////////////////////////////////////////////////////////
//ожидание команды от кликермана в виде строоки
while (Serial.available() > 0) {
int inchar = Serial.read(); // принимаем по одному символу ASCI (по другому пока я незнаю как передавать)
if (isDigit(inchar)) { //если это цифра,
instring += (char)inchar; //то соединяем ее с предыдущей цифрой
}
if (inchar == '\n') { //как только закончили прием. '\n' значит перенос строки, значит конец передачи.
val = instring.toInt(); //строку instring переделываем в число val
instring = ""; //обнуляем строку
}
Serial.println(val, DEC);
} //все, с приемом окончили, получили число val
////////////////////////////////////////////////////////////////////////
//ожидаем, пока переменная val станет больше нуля
if (val > 0) {
//далее разбиваем наше число на биты, и судя по ним, делаем нужные действия
kmfunct = int(val/268435456) ; //номер функции
Serial.println(kmfunct, DEC); //смотрим номер функции
switch (kmfunct) {
case 1: // Mouse.click
Serial.println("Mouse_click");
click_par = int (val - kmfunct*268435456); // возможны 3 варианта - левая, правая, средняя
switch (click_par) {
case 1:
Mouse.click(MOUSE_LEFT);
break;
case 2:
Mouse.click(MOUSE_RIGHT);
break;
case 3:
Mouse.click(MOUSE_MIDDLE);
break;
}
break;
case 2: // Mouse.move()
Serial.println("Mouse_move");
x_cor = char((val - kmfunct*268435456)/256);
y_cor = char(val - x_cor*256 - kmfunct*268435456);
Serial.println(x_cor, DEC); //смортим параметры сдвигов
Serial.println(y_cor, DEC);
Mouse.move(100, 100, 0);
break;
}
delay(5000);
// val = 0; //в конце обнуляем нашу переменную
}
}