Cómo simular el control de un ratón con tu Arduino

Usando la biblioteca del ratón, puedes controlar el cursor en pantalla de un ordenador con un Arduino Leonardo, Micro o Due.

Este tutorial Arduino particular utiliza cinco pulsadores para desplazar el cursor en pantalla. Cuatro de los botones son direccionales (arriba, abajo, izquierda, derecha) y uno es para un clic izquierdo del ratón. El movimiento del cursor desde 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 direccionales, Arduino moverá el ratón, mapeando una entrada HIGH a un rango de 5 en la dirección apropiada.

El quinto botón sirve para controlar un clic con el botón izquierdo del ratón. Cuando se suelta el botón, la computadora reconocerá el evento.

Componentes necesarios

Necesitarás los siguientes componentes:

  • 1 × Breadboard
  • 1 × Arduino Leonardo, Micro o Due board
  • 5 × Resistencia de 10k ohmios
  • 5 × pulsadores momentáneos

Procedimiento

Sigue el diagrama de circuitos y conecta los componentes de la protoboard como se muestra en la imagen de abajo.

diagrama para controlar el puntero de ratón con Arduino

Abre el software IDE de Arduino en tu ordenador. La programación realizada con el lenguaje Arduino controlará tu circuito. Abre un nuevo archivo de sketch haciendo clic en Nuevo.

Código Arduino

/*
Button Mouse Control
For Leonardo and Due boards only .Controls the mouse from
five pushbuttons on an Arduino Leonardo, Micro or Due.
Hardware:
* 5 pushbuttons attached to D2, D3, D4, D5, D6
The mouse movement is always relative. This sketch reads
four pushbuttons, and uses them to set the movement of the mouse.
WARNING: When you use the Mouse.move() command, the Arduino takes
over your mouse! Make sure you have control before you use the mouse commands.
*/

#include "Mouse.h"
// set pin numbers for the five buttons:
const int upButton = 2;
const int downButton = 3;
const int leftButton = 4;
const int rightButton = 5;
const int mouseButton = 6;
int range = 5; // output range of X or Y movement; affects movement speed
int responseDelay = 10; // response delay of the mouse, in ms

void setup() {
// initialize the buttons' inputs:
pinMode(upButton, INPUT);
pinMode(downButton, INPUT);
pinMode(leftButton, INPUT);
pinMode(rightButton, INPUT);
pinMode(mouseButton, INPUT);
// initialize mouse control:
Mouse.begin();
}

void loop() {
// read the buttons:
int upState = digitalRead(upButton);
int downState = digitalRead(downButton);
int rightState = digitalRead(rightButton);
int leftState = digitalRead(leftButton);
int clickState = digitalRead(mouseButton);
// calculate the movement distance based on the button states:
int xDistance = (leftState - rightState) * range;
int yDistance = (upState - downState) * range;
// if X or Y is non-zero, move:
if ((xDistance != 0) || (yDistance != 0)) {
Mouse.move(xDistance, yDistance, 0);
}

// if the mouse button is pressed:
if (clickState == HIGH) {
// if the mouse is not pressed, press it:
if (!Mouse.isPressed(MOUSE_LEFT)) {
Mouse.press(MOUSE_LEFT);
}
} else { // else the mouse button is not pressed:
// if the mouse is pressed, release it:
if (Mouse.isPressed(MOUSE_LEFT)) {
Mouse.release(MOUSE_LEFT);
}
}
// a delay so the mouse does not move too fast:
delay(responseDelay);
}

Conecta la tarjeta al ordenador con un cable micro-USB. Los botones están conectados a las entradas digitales de los pines 2 a 6. Asegúrate de usar resistencias de 10k.

Veamos en vídeo cómo hacerlo con una Arduino Pro micro:

Pin It on Pinterest

Shares