Mouse.move()

Descripción

Mueve el cursor en un ordenador conectado. El movimiento en la pantalla es siempre relativo a la ubicación actual del cursor. Antes de utilizar Mouse.move () debe llamar a Mouse.begin()
ADVERTENCIA: Cuando se utiliza el comando Mouse.move (), el Arduino se hace cargo del ratón! Asegúrate de que tienes el control antes de utilizar el comando. Un botón para cambiar el estado de control del ratón es eficaz.

Sintaxis

Mouse.move(xVal, yPos, wheel);

Parámetros

xVal: cantidad que se mueve a lo largo del eje x - char con signo
yVal: cantidad que se mueve a lo largo del eje y - char con signo
wheel: cantidad que se mueve con la rueda de desplazamiento - char con signo

Retornos

Ninguno
Ejemplo:
const int xAxis = A1;         // sensor analogico para el eje X  
const int yAxis = A2;         //
 sensor analogico para el eje Y  

int range = 12;               // rango de salida del movimiento X o Y
int responseDelay = 2;       //  tiempo de respuesta del ratón en ms
int threshold = range/4;      // umbral de reposo
int center = range/2;         //valor de posición de reposo
int minima[] = { 
  1023, 1023};                //  analogRead mínima actual para {x, y}
int maxima[] = {
  0,0};                       //  analogRead máxima actual para {x, y}
int axis[] = {
  xAxis, yAxis};              // números de pines pata {x, y}
int mouseReading[2];          //valores finales para el ratón {x, y}


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

void loop() {

// read and scale the two axes:
  int xReading = readAxis(0);
  int yReading = readAxis(1);

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

/*
 lee un eje (0 o 1 para x o y) y escala el rango de entrada analógica en una gama de 0 a <rango>
*/


int readAxis(int axisNumber) {
  int distance = 0;    // distancia del centro del rango de salida

  // lee la entrada analógica:
  int reading = analogRead(axis[axisNumber]);

// de la lectura actual excede el máximo o el mínimo para este eje,
// restablece el máximo o el mínimo
  if (reading < minima[axisNumber]) {
    minima[axisNumber] = reading;
  }
  if (reading > maxima[axisNumber]) {
    maxima[axisNumber] = reading;
  }

  // mapea la lectura de la gama de entrada analógica al rango de salida:
  reading = map(reading, minima[axisNumber], maxima[axisNumber], 0, range);

 // si la lectura de salida se encuentra fuera del
 // umbral de la posición de reposo, usa esto
  if (abs(reading - center) > threshold) {
    distance = (reading - center);
  } 

  // el eje Y necesita ser invertido para
  // mapear el movimiento correctamente
  if (axisNumber == 1) {
    distance = -distance;
  }

  // devuelve la distancia desde los ejes:
  return distance;
}

2 comentarios:

  1. muchas gracias por esta informascion

    ResponderEliminar
  2. Hola, muy bueno el tutorial, ahora bien compo puedo hacer para usar esta placa en cualquier pc, una vez que ya subi el codigo a la placa?
    gracias

    ResponderEliminar