Boa tarde galera,
Tenho um programa em c# que envia pela serial, uma string contendo 2 parâmetros XY, por exemplo assim "250,300". O arduino recebe, divide em duas coordenadas e usa o Mouse.move(x,y).
O mouse se move, mas não de maneira correta. Se eu passo uma coordenada tipo 100,100 o mouse vai parar em outro lugar que não onde eu mandei. Eu sou novato em tudo isso, ouvi falar em posição relativa e absoluta, mas não entendi como funciona e nem como implementar isso corretamente, alguém tem algum solução? Meu código tá assim (na verdade já me disseram que tá muito errado, mas não apontaram o que tá errado, se alguém fizer esse favor :)
String xTexto = "";
String yTexto = "";
String XY ="";
int xNumero = 0;
int yNumero = 0;
void setup() {
Serial.begin(9600);
Mouse.begin();
}
String getValue(String data, char separator, int index)
{
int found = 0;
int strIndex[] = {
0, -1 };
int maxIndex = data.length()-1;
for(int i=0; i<=maxIndex && found<=index; i++){
if(data.charAt(i)==separator || i==maxIndex){
found++;
strIndex[0] = strIndex[1]+1;
strIndex[1] = (i == maxIndex) ? i+1 : i;
}
}
return found>index ? data.substring(strIndex[0], strIndex[1]) : "";
}
void loop() {
if(Serial.available()>0)
{
while(Serial.available()>0)
{
XY += char(Serial.read());
delay(3);
}
xTexto = getValue(XY,':',0);
yTexto = getValue(XY,':',1);
xNumero = xTexto.toInt();
yNumero = yTexto.toInt();
Mouse.move(xNumero,yNumero);
xTexto = "";
yTexto = "";
XY = "";
}
}
Tags:
Bom, resolve parcialmente meu problema e gostaria de deixar relatado aqui pra se mais alguém tiver o mesmo problema
Fiz basicamente uma gambiarra com uma regra de 3, minha screen é de 1920x1080, e com mouse.move(1,0) 1650 vezes, o mouse completava corretamente os 1920 e por volta de 850, ele completava os 1080, então encontrei a razão e multipliquei os valores passados e coloquei dentro de um FOR pra X e outro pra Y, o mouse anda fazendo angulos de 90º na tela, e depois fiz com que ele retornasse ao ponto 0,0 a cada click pra não me preocupar em saber onde ele estaria nos próximos comandos. A precisão fica em uns 98% :) .
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por