Mouse con Arduino Leonardo
Realizziamo un mouse per il nostro computer.
Come per il tutorial sul controller per Davinci Revolve, anche in questo esempio utilizzeremo la libreria USB-Input presente nell’istallazione base dell’IDE di Arduino, in abbinamento ad un Arduino Leonardo.
Per chi non lo conoscesse, Arduino Leonardo è una scheda di prototipazione rapida simile ad Arduino Uno ma basata su microcontrollore ATmega32u4. La peculiarità di questa scheda è il fatto di avere una USB integrata e quindi la possibilità di essere vista da un computer come una dispositivo di input (tastiera o mouse).
Lista dei componenti utilizzati
- Arduino Leonardo o compatibili;
- Modulo Joystick KY-023;
- Modulo Pulsante KY-004;
- Cavetti Dupont;
- Breadboard 400 punti (non essenziale);
- Kit Arduino Uno Elegoo (non essenziale).
Quando si utilizzano le librerie di input bisogna fare molta attenzione. Un piccolo bug o una serie di dati inviati a raffica, possono rendere inaccessibile la periferica ad una successiva riprogrammazione. Visto che utilizzano la stessa seriale sia per inviare che per ricevere dati, e non posso fare entrambe le cose contemporaneamente.
Una buona regola è quella d’inserire un pulsante o un interruttore per attivare o disattivare la funzione d’invio dati (meglio se con controllo di tipo interrupt).
Nel codice ho utilizzato questa funzionalità collegando un pulsante in modalità INPUT_PULLUP sul pin 2 ma senza interrupt.
Schema elettrico
Le letture analogiche del joystick sono: asse X sui A0 e asse Y su A1.
Per simulare la pressione del tasto sinistro del mouse ho utilizzato il pulsante presente sul modulo KY-023 sempre in modalità INPUT_PULLUP e collegato al pin 3.
Il codice
Lavorando a stati è possibile attivare o disattivare la funzione di controllo mouse ogni qual volta che il pulsante, collegato al pin 2 viene premuto. Quando e LOW inverte il valore del suo stato, memorizzandolo su due variabili in modo da poter effettuare un controllo tra stato attuale e precedente.
Solo se la funzione mouse è attiva, vengono letti valori i degli ingressi analogici A0 e A1 per essere poi rimappati dalla funzione LetturaAssi().
Questa funzione ottimizza la scala a 10bit dell’ADC in valori più comodi per le coordinate da inviare alla freccia de mouse. Inoltre le soglie d’attivazione e posizionamento.
Tutte le spiegazioni relative al codice sono presenti come commenti nel codice stesso, oppure guardando il video è possibile avere ancora più info.
Scarica lo sketch da questo link:
Mouse_Arduino
Tutti i file compressi disponibili per il download, sono stati realizzati utilizzando il software IZArc. Il software è totalmente gratuito e scaricabile da qui. Per una corretta estrazione dei file, Vi consiglio di scaricarlo.
Per qualsiasi info, per un aiuto nella realizzazione dei vostri progetti, o più semplicemente per segnalarci degli errori o link corrotti, utilizzate la pagina Contattaci.
Grazie per aver letto questo articolo, se puoi leggine degli altri, commenta per sostenere il blog e iscriviti al mio canale Youtube. Seguimi anche su Instagram e Facebook dove puoi anche pubblicare i tuoi progetti sul gruppo Arduino For Peoplem.