Arduino - Controllo dei pulsanti del mouse

Utilizzando la libreria del mouse, puoi controllare il cursore su schermo di un computer con un Arduino Leonardo, Micro o Due.

Questo particolare esempio utilizza cinque pulsanti per spostare il cursore sullo schermo. Quattro dei pulsanti sono direzionali (su, giù, sinistra, destra) e uno è per il clic sinistro del mouse. Il movimento del cursore da Arduino è sempre relativo. Ogni volta che viene letto un input, la posizione del cursore viene aggiornata rispetto alla sua posizione corrente.

Ogni volta che viene premuto uno dei pulsanti direzionali, Arduino muoverà il mouse, mappando un ingresso ALTO su un intervallo di 5 nella direzione appropriata.

Il quinto pulsante serve per controllare un clic sinistro del mouse. Quando il pulsante viene rilasciato, il computer riconoscerà l'evento.

Componenti richiesti

Avrai bisogno dei seguenti componenti:

  • 1 × Breadboard
  • 1 × scheda Arduino Leonardo, Micro o Due
  • Resistenza 5 × 10k ohm
  • 5 × pulsanti momentanei

Procedura

Seguire lo schema del circuito e collegare i componenti sulla breadboard come mostrato nell'immagine sottostante.

Schizzo

Apri il software IDE Arduino sul tuo computer. La codifica nella lingua Arduino controllerà il tuo circuito. Aprire un nuovo file di schizzo facendo clic su Nuovo.

Per questo esempio, è necessario utilizzare Arduino IDE 1.6.7

Codice 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);
}

Codice da notare

Collega la tua scheda al computer con un cavo micro-USB. I pulsanti sono collegati agli ingressi digitali dai pin da 2 a 6. Assicurarsi di utilizzare resistenze pull-down da 10k.