Tutorial: Leonardo come Mouse

Leonardo è una delle ultime nate della famiglia Arduino ed io ne ho acquistata una nel corso dell’ultimo arduino camp a Torino.

leonardo come mouse

Tra le caratteristiche principali di questa scheda c’è la possibilità di utilizzarla per simulare un mouse o una tastiera connessa al computer.

Nel nuovo IDE 1.0.1 trovi già degli sketch per utilizzarla come mouse con il joystick della sparkfun, ma ho voluto provare a dare un tocco personale sfuttando le caratteristiche di mouse connessi a 4 pulsanti: Up,Down,Left e Right e a un potenziometro da 10KΩ che ti permette di regolare la sensibilità del mouse.

mouse leonardo

Componenti

Inizia subito col procurarti l’occorrente:

  • n.1 arduino leonardo
  • n.1 cavo micro-usb per collegare leonardo al computer
  • n.4 pulsanti na (normalmente aperto)
  • n.4 resistenze da 330Ω (pull-up)
  • n.1 potenziometro da 10KΩ
  • n.1 bradboard
  • un po’ di cavi per breadboard

Collegamenti tra arduino Leonardo e i pulsanti

connessione pulsanti leonardo

Nella foto puoi intuire il collegamento dei 4 pulsanti e delle resistenze ad arduino, è identico a quello che hai già visto in altri tutorial, ti riporto lo schema in cui trovi anche come collegare il potenziometro:

schema di collegamento mouse

ti sarai accorto che nello schema non c’è rappresentato un’arduino leonardo ma un arduino uno, non è un errore involontario e neppure l’invito ad usare questa scheda al poso della leonardo, il motivo è che in Fritzing non ho l’arduino leonardo, forse nei prossimi aggiornamenti del programma comparirà anche questo componente.

Lo Sketch da caricare sulla leonardo

Premetto che lo sketch fa uso di concetti molto semplici ed è solo a titolo di esempio per questo esperimento e per farti iniziare a sperimentare l’interfaccia mouse con arduino leonardo.

Se hai già consultato il reference dell’oggetto mouse conosci già tutte le possibilità che ti offre, nell’esempio trovi sono 1 comando oltre all’inizializzazione:

/*
 * Mouse con Arduino Leonardo
 *
 * autor: Mauro Alfieri
 * www.mauroalfieri.it
 * Tw: @mauroalfieri.it
 *
 */

 int pinUp = 2;
 int pinDown = 3;
 int pinLeft = 4;
 int pinRight = 5;
 int pinSens = A0;

 int sensibilita = 0;

 void setup() {
   pinMode( pinUp, INPUT );
   pinMode( pinDown, INPUT );
   pinMode( pinLeft, INPUT );
   pinMode( pinRight, INPUT );
   pinMode( pinSens, INPUT );

   Mouse.begin();
 }

 void loop() {
   sensibilita = map(analogRead( pinSens ), 0 , 1023, 0, 20);
   if ( digitalRead(pinUp) == HIGH ) {
     Mouse.move( 0, -sensibilita, 0 );
   } else if ( digitalRead(pinDown) == HIGH ) {
     Mouse.move( 0, sensibilita, 0 );
   }

   if ( digitalRead(pinLeft) == HIGH ) {
     Mouse.move( -sensibilita, 0, 0 );
   } else if ( digitalRead(pinRight) == HIGH ) {
     Mouse.move( sensibilita, 0 ,0 );
   }
 }

linee 10-13: definisci le variabili di tipo integer a cui sono collegati i 4 pulsanti;

linea 14: definisci il pin analogico a cui collegherai il potenziometro per definire la sensibilità del mouse;

linea 16: definisci la variabile di tipo integer in cui memorizzerai il valore di sensibilità letto sul pin analogico;

linee 19-23: imposta la modalità di funzionamento dei pin a cui sono connessi i pulsanti ed il potenziometro;

linea 25: inizializza l’oggetto Mouse utilizzando il metodo begin() dell’oggetto stesso;

linea 29: rileva la sensibilità del mouse, per farlo puoi utilizzare il comando analogRead(pin) per leggere il valore del potenziometro (0-1023) e utilizza il comando map() di arduino per rimappare i valori letti dal potenziometro su un range decisamente inferiore (0-20) ti assicuro che già a 20 il mouse è incontrollabile, per cui se vuoi puoi provare a rimappare su un range maggiore, l’importante è che il valore minimo sia 0 in modo che tu possa diminuire fino ad azzerare la sensibilità del mouse: mouse fermo;

linea 30: con il comando digitaRead(pinUp) leggi il valore sul pulsante connesso al pinUp ossia quello che regola movimento verso l’alto del puntatore del mouse. Se il valore è HIGH vuol dire che hai premuto il pulsante e quindi esegui la linea 31:

linea 31: il comando Mouse.move( x,y,wheel ) è l’artefice del vero e proprio spostamento del mouse, X ed Y indicano la quantità di pixel di cui il mouse si deve spostare. Contrariamente a quanto inizialmente mi attendessi il valore di X e Y non indica le coordinate in cui posizionare il mause. In questa linea, siccome il movimento che desideri è verso l’alto, lasci a 0 il valore di X e sposti del valore di sensibilità il mouse sull’asse Y. Per andare verso l’alto dovrai spostarti con un valore negativo, il valore positivo si sposta verso il basso;

linee 32-33: rileva la pressione del pulsante pinDown e sposta il mouse vero il basso di un numero di pixel pari alla sensibilità definita;

linee 36-40: eseguono le stesse operazioni viste per le linee 30-33, ma per gli spostamenti lungo l’asse delle ascisse ( X ) per cui il comando Mouse.move( x,y,wheel ) è valorizzato solo per l’asse X;

E’ uno sketch che fa davvero poco, sposta solo il mouse e non clicca nulla, prossimamente proverai i comandi di click del mouse.

Il Video della leonardo usata come mouse

come spesso faccio, ultimamente, ho realizzato anche un video demo dello spostamento del mouse mentre premo i pulsanti collegati da arduino, devi guardare con molta attenzione lo sfondo del computer per percepire i movimenti … colpa della ripresa 🙂

Buon divertimento !!!

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/elettronica/tutorial-leonardo-come-mouse.html

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.