Button Mouse Control

Usando la biblioteca Mouse, se puede controlar del cursor en la pantalla de un ordenador con un Arduino Leonardo, Micro, o Due. Este ejemplo particular utiliza cinco pulsadores para mover el cursor en pantalla. Cuatro de los botones son direccionables (arriba, abajo, izquierda, derecha) y uno es para un clic izquierdo del ratón.
El movimiento del cursor del Arduino es siempre relativo. Cada vez que se lee una entrada, la posición del cursor se actualiza con respecto a su posición actual.
Cada vez que se pulsa uno de los botones de dirección, el Arduino moverá el ratón, mapeando una entrada HIGH en un rango de 5 en la dirección apropiada.
El quinto botón se utiliza para controlar el clic izquierdo de un ratón. Cuando se pulsa, la placa envía una pulsación al ordenador. Cuando se suelta el pulsador, el ordenador reconocerá el evento.
Nota: Cuando se utiliza el comando Mouse.move (), el Arduino se hace cargo del cursor de su ordenador! Para asegurar que no pierde el control de su ordenador mientras se ejecuta un programa con esta función, asegúrese de configurar un controlador antes de llamar a Mouse.move (). Este programa sólo actualiza la posición del cursor cuando se activa un pulsador.

Hardware Requerido

  • 1 Placa Arduino Leonardo, Micro o Due 
  • 5 Pulsadores
  • 5 Resistencias de 10k ohm 
  • hilo para cableado
  • 1 Protoboard

Circuito

Conectar la placa al ordenador con un cable micro-USB. Los pulsadores están conectados a las entradas digitales de 2 a 6. Asegúrese de que utiliza resistencias pull-down de 10 k ohmios.

Esquema

Código

/*
  ButtonMouseControl

 Solo para placas Leonardo y Due.

 Controla el Ratón con cinco pulsadores en un Arduino Leonardo, Micro o Due.

 Hardware:
 * 5 pulsadores conectadoa a D2, D3, D4, D5, D6


 El movimiento del ratón es siempre relativo. Este programa lee
 cuatro pulsadores y los usa para movel el ratón.

 ADVERTENCIA:  Cuando se usa el comando Mouse.move() el Arduino toma el control
sl ratón!  Asegúrese de tener control antes de usar los comando del retón.

 creado 15 Marzo 2012
 modificado 27 Marzo 2012
 por Tom Igoe

Este código es de dominio pçublico

 */


#include "Mouse.h"

// configura los números de pin de los pulsadores:
const int upButton = 2;
const int downButton = 3;
const int leftButton = 4;
const int rightButton = 5;
const int mouseButton = 6;

int range = 5;                      // rango de los movimientos X o Y ;afecta a la velocidad
int responseDelay = 10;     // tiempo de respuesta del ratón en ms


void setup() {
  // inicializa las entradas de los pulsadores:
  pinMode(upButton, INPUT);
  pinMode(downButton, INPUT);
  pinMode(leftButton, INPUT);
  pinMode(rightButton, INPUT);
  pinMode(mouseButton, INPUT);
  // inicializa el control del ratón
  Mouse.begin();
}

void loop() {
  // lee los pulsadores:
  int upState = digitalRead(upButton);
  int downState = digitalRead(downButton);
  int rightState = digitalRead(rightButton);
  int leftState = digitalRead(leftButton);
  int clickState = digitalRead(mouseButton);

  // calcula la distancia de movimiento basado en los estados de los pulsadores:
  int  xDistance = (leftState - rightState) * range;
  int  yDistance = (upState - downState) * range;

  //si X o Y es distinto de cero, mover:
  if ((xDistance != 0) || (yDistance != 0)) {
    Mouse.move(xDistance, yDistance, 0);
  }

  // si el pulsador se activa:
  if (clickState == HIGH) {
    //Si no está pulsado el ratón, presionarlo:
    if (!Mouse.isPressed(MOUSE_LEFT)) {
      Mouse.press(MOUSE_LEFT);
    }
  }
  // de lo contrario el botón del ratón no está presionado:
  else {
    // Si el ratón está pulsado, liberarlo:
    if (Mouse.isPressed(MOUSE_LEFT)) {
      Mouse.release(MOUSE_LEFT);
    }
  }

  // un retraso por lo que el ratón no se mueve demasiado rápido:
  delay(responseDelay);
}



No hay comentarios:

Publicar un comentario