
Collegare un mouse alla scheda Arduino è molto semplice, utilizzando pochi fili possiamo facilmente integrarlo nei nostri progetti elettronici.
Collegare un mouse ad un Arduino può diventare davvero molto semplice. Bastano pochi fili per integrarlo nei nostri progetti Arduino. Con il metodo qui descritto, il mouse può fungere da sensore per determinare le posizioni o i movimenti di veicoli o robot.

Figura 1: Cablaggio di un connettore PS/2

Figura 2: Cablaggio di un connettore USB
Innanzitutto, è importante ricordare che funziona solo con i mouse che supportano il protocollo PS/2. I mouse moderni, ad esempio quelli wireless, supportano solo l'USB e non "comprendono" più il PS/2. PS/2 è un protocollo seriale, simile al protocollo UART, ma a differenza di UART, PS/2 è un protocollo sincrono, il che significa che i dati e il clock utilizzano fili differenti. In questo modo, è facile utilizzare l'interfaccia seriale incorporata di Arduino per ricevere i dati PS/2 dal mouse.

Figura 3: Collegamento di un mouse ad Arduino
I dati vanno nel pin Rx di Arduino, il clock va nel pin 4. Con la resistenza da 10k tra Data e +5V, è comunque possibile utilizzare l'interfaccia per caricare i programmi mentre il mouse è collegato. Al termine dello sviluppo, il resistore può essere rimosso. Con una piccola libreria Arduino, è facile integrare il mouse nei tuoi progetti.
Sketch del progetto
#include "ps2mouse.h" void on_mouse_ready(uint8_t t) { if(t == BASIC) Serial.print("Basic "); else Serial.print("Wheel "); Serial.println("mouse connected"); } void on_mouse_disconnected() { for (int i = 5; i<=10; i++) digitalWrite(i, 0); Serial.println("Mouse disconnected"); } void on_mouse(uint8_t btn, int8_t xmov, int8_t ymov, int8_t wheel) { char status[64]; static int16_t x=128, y=128, w=240; sprintf(status, "Button: %i, xmov: %i, ymov: %i, wheel: %i\n", btn, xmov, ymov, wheel); y -= ymov/4; if(y < 0) y = 0; if(y > 255) y = 255; x -= xmov/4; if(x < 0) x = 0; if(x > 255) x = 255; w += wheel * 4; if(w < 0) w = 0; if(w > 255) w = 255; analogWrite(5, x); analogWrite(6, y); analogWrite(9, w); if(btn) { digitalWrite(7, btn & 1); digitalWrite(8, btn & 2); digitalWrite(10, btn & 4); } //Serial.println(status); } void setup() { Serial.begin(115200); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); mouse_init(); } void loop() { mouse_update(); }
Guarda il video per maggiori dettagli sul progetto:
Link al progetto: Connecting a Mouse to an Arduino - Hackster.io
