Esta página também está disponível em outros 2 idiomas.

Mouse.move()

Descrição

Move o cursor do mouse em um computador conectado. O movimento é sempre relativo a localização atual do cursor. Antes de usar Mouse.move() você deve chamar Mouse.begin()

Sintaxe

Mouse.move(xVal, yVal, wheel);

Parâmetros

xVal: quantidade de movimento no eixo x - signed char

yVal: quantidade de movimento no eixo x - signed char

wheel: quantidade de movimento na rodinha (scroll) - signed char

Retorna

Nada

Código de Exemplo

#include <Mouse.h>
// Código originalmente em Inglês
// Traduzido em Dezembro de 2017

const int xAxis = A1;       // sensor analógico para o eixo x
const int yAxis = A2;       // sensor analógico para o eixo y

int range = 12;             // intervalo se sada do movimento em X ou Y
int responseDelay = 2;      // atraso de resposta do mouse, em ms
int threshold = range / 4;  // limiar de descanso
int center = range / 2;     // valor da poisção de descanso
int minima[] = {
  1023, 1023
};  // minima real de analogRead para {x, y}
int maxima[] = {
  0, 0
};  // maxima real de analogRead para {x, y}
int axis[] = {
  xAxis, yAxis
};  // número dos pinos para {x, y}
int mouseReading[2];  // leituras finais do mouse para {x, y}


void setup() {
  Mouse.begin();
}

void loop() {
  // lê e escala os dois eixos:
  int xReading = readAxis(0);
  int yReading = readAxis(1);

  // move o mouse:
  Mouse.move(xReading, yReading, 0);
  delay(responseDelay);
}

/*
  Lê um eixo (0 ou 1 para x ou y) e escala o intervalo
  da entrada analógica para um intervalo entre 0 e <range>
*/

int readAxis(int axisNumber) {
  int distance = 0; // distância ao centro do intervalo de saída

  // lê a entrada nalógica:
  int reading = analogRead(axis[axisNumber]);

  // se a leitura atual excede o máximo ou mínimo para esse eixo,
  // reseta o máximo ou mínimo de acordo:
  if (reading < minima[axisNumber]) {
    minima[axisNumber] = reading;
  }
  if (reading > maxima[axisNumber]) {
    maxima[axisNumber] = reading;
  }

  // mapeia o intervalo da leitura da entrada analógica para o intervalo de saída:
  reading = map(reading, minima[axisNumber], maxima[axisNumber], 0, range);

  // se o valor se saída está fora do limiar de descanso, usa-o:
  if (abs(reading - center) > threshold) {
    distance = (reading - center);
  }

  // O eixo y precisa ser invertido para
  // mapear o movimento corretamente:
  if (axisNumber == 1) {
    distance = -distance;
  }

  // retorna a distância para o eixo especificado:
  return distance;
}

Notas e Advertências

Quando você usa a função Mouse.click(), o Arduino toma o controle do computador! Tenha certeza que você tem controle de quando as comanndos vão ser enviados antes de usar essa função. Pode ser difícil gravar um novo código no Arduino se ele estiver enviando cliques o tempo todo. Um botão para ativar/desativar o controle do mouse emulado é bastante efetivo.

Ver Também

LINGUAGEM Mouse.click()
LINGUAGEM Mouse.end()
LINGUAGEM Mouse.press()
LINGUAGEM Mouse.release()
LINGUAGEM Mouse.isPressed()