Utilizzare 'Mouse.begin()' con ArduinoUNO?

Compilando il codice per il controllo del mouse compare a riguardo del setup "Mouse.begin()" il seguente errore:
'Mouse' only supported on the Arduino Leonardo.

C'è qualche maniera per utilizzare comunque Mouse.xxx() anche con l'Arduino Uno che è in mio possesso?

No.
Arduino Leonardo ha un controller (ATmega32U4) che gestisce sia lo sketch che l'interfaccia USB. Per questo é possibile scrivere nello sketch commandi per la gestione USB. Sulla UNO c'é un ATmega328 per lo sketch e un ATmega8U2 /16U2 per la USB.
Per fare una cosa simile sulla Uno devi riprogrammare l'ATmega8U2/16U2 con un programmatore ISP e poi probabilmente non funziona piú l' upload automatico.

Ciao Uwe

Capisco e mi rammarico :frowning:
grazie mille della pronta risposta
e ne approfitto per chiederti se hai consigli da darmi su come raggirare il problema senza riprogrammare ATmega8U2/16U2?

L'unica soluzione che vedo al momento è di collegare un cavo USB ai pin digitali dell'arduino e su quelli riproporre la comunicazione USB con tanto di protocollo per il mouse. E in questa casistica sarebbe bello riciclare le funzioni in oggetto se possibile.

Di per sè è complicato emulare una periferica USB e farlo con una MCU che è poco veloce come l'AT 328 mi sembra una pazzia :slight_smile:

Ciao

date un'occhiata al progetto V-USB for Arduino:

http://code.google.com/p/vusb-for-arduino/
http://www.practicalarduino.com/projects/virtual-usb-keyboard

vusb è un casino, se ne era parlato sul forum.

allora con arduino uno puoi fare questa cosa:
programmi in modo che invii i segnali tramite seriale al computer, quindi con un software sul pc crei un mouse fittizio ed apri la seriale, controlli in arrivo e "scrivi" sul mouse fittizio i valori che vanno al sistema operativo che leggi dalla seriale. viene molto utilizzato questo metodo con le piattaforme MIDI fatte con arduino.

altra soluzione è quella di riprogrammare, come detto, l'8u2/16u2.
è una cosa fattibile e se non erro è possibile programmarlo anche tramite l'interfaccia usb senza ricorrere all'ISP (tuttavia nel tuo programma devi includere un "bootloader" che controlli eventuali arrivi dall'usb).

io avevo fatto casini e col tool della atmel ero riuscito a rimettere sull'8u2 il firmware del chip preso dal sito di arduino tutto tramite usb.
se proprio compri a parte un atmega328, un convertitore usb<->seriale, quarzo da 16MHz, 2 condensatori da 22Pf, resistenze e condensatori vari e li metti su breadboard, quindi leggi la guida di menniti sulla programmazione ICSP tramite arduino :wink:

Grazie mille a tutti,
leggevo i link indicati da luca. Navigandoli un po' ho trovato queste librerie presenti:

Mi sembra abbastanza accessibile, spero... Superlol che ne pensi? ancora dell'idea vusb->casino anche nella mia casistica?
Lucadentella hai già avuto esperienza a riguardo?

Periodicamente la V-Usb/Metaboard/Avr-Cdc salta fuori :wink:
E' una implementazione software che il più delle volte non funziona. Dipende da troppi fattori, che ovviamente portano spesso all'insuccesso.

leo72:
Periodicamente la V-Usb/Metaboard/Avr-Cdc salta fuori :wink:
E' una implementazione software che il più delle volte non funziona. Dipende da troppi fattori, che ovviamente portano spesso all'insuccesso.

tu stesso avevi aperto una discussione di 5 pagine a riguardo no? :wink:

comunque il metodo migliore come prestazioni è riprogrammare l'8u2 mentre il più comodo è quello di inviare tutto via seriale e poi mettere un programma su pc con periferica fittizia (molto più facile un debug su pc che su uC :stuck_out_tongue: ).

il più incasinato e meno redditizio è quello di usare la v-usb XD

a te la scelta, io consiglio la soluzione seriale, poca programmazione lato arduino e trovi molti codici già mezzi fatti in giro per il web.. la cosa più dura sarà scrivere un "driver" generico per il mouse fittizio

EDIT:
solo un secondo: a te serve solo muovere il mouse (puntatore) ed effettuare eventuali click oppure ti serve proprio la periferica del mouse? (compatibilità con giochi ed eventi directx)

Se si riprogramma l'8U2 si perde la possibilità di connettere l'Arduino al PC e di programmarlo senza aggiunta di HW esterno.
Al momento la soluzione più semplice è... proprio l'acquisto della Leonardo, è una scheda fatta apposta per questo genere di compiti.

leo72:
Se si riprogramma l'8U2 si perde la possibilità di connettere l'Arduino al PC e di programmarlo senza aggiunta di HW esterno.
Al momento la soluzione più semplice è... proprio l'acquisto della Leonardo, è una scheda fatta apposta per questo genere di compiti.

effettivamente leonardo è la più bella (che complimenti che faccio... alle schede ]:smiley: ) da questo punto di vista.

comunque ti contraddico perchè in realtà è possibile riprogrammare anche l'8u2 (sotto windows sono 4 click) tramite usb quindi ricarichi il firmware 8u2 originale e programmi l'atmega, poi riprogrammi l'8u2 col tuo firmware..

è macchinosa ma fattibile... altrimenti ti fai un programmatori icsp da 10€ (atmega328+circuiteria esterna+convertitore usb<->seriale)

E' macchinoso ma fattibile. Certo che si può riprogrammare il micro con il firmware originale. Difatti io non ho mica detto che perdi la possibilità di riprogrammare l'arduino PER SEMPRE. Ho detto che se riprogrammi l'8U2 non puoi riprogrammare l'Arduino. E' normale, dato che il firmware preinstallato su quel chip fa da convertitore USB/seriale. E poi quanti progretti realmente realizzati hai visto basati sull'8U2? :wink:

Il 32U4 ha invece il modulo USB integrato per cui fa questo e quello. Hai le ib già pronte e funzionanti. Perché reinventare la ruota? :stuck_out_tongue:

leo72:
E' macchinoso ma fattibile. Certo che si può riprogrammare il micro con il firmware originale. Difatti io non ho mica detto che perdi la possibilità di riprogrammare l'arduino PER SEMPRE. Ho detto che se riprogrammi l'8U2 non puoi riprogrammare l'Arduino. E' normale, dato che il firmware preinstallato su quel chip fa da convertitore USB/seriale. E poi quanti progretti realmente realizzati hai visto basati sull'8U2? :wink:

Il 32U4 ha invece il modulo USB integrato per cui fa questo e quello. Hai le ib già pronte e funzionanti. Perché reinventare la ruota? :stuck_out_tongue:

eppure.. secondo me è possibile fare credere al pc che sia un hub usb a 2 porte con attaccato un convertitore seriale e un mouse (o quello che si vuole) e da quello gestire sia l'upload sul micro che l'interfaccia di "conversione" XD

beh a pensarci l'8u2 ha 2 pin disponibili se non erro, quindi si potrebbe fare un firmware che cambia se un pin viene messo a massa o 5V.. però auguri a saldare una pulldown su una package simile XD già adesso resettando l'8u2 lo si manda in moddalità DFU ma non so se è una cosa del micro in se o del firmware...

di progetti ho visto joystick e tastiere..

E tutta 'sta roba dove la metti? L'8U2 ha 8Kb di Flash, eh :stuck_out_tongue:

Grazie mille a tutti per il support.
Essenzialmente il mio progetto consiste nel collegare un sensore all'arduino che comanda appunto i movimenti del mouse.

Ora mi sembra di capire che è meglio non continuare la via di VUSB.
Valuto quindi la possibilità di riprogrammare ATmega8U2/16U2: per farlo

Superlol hai scritto:

comunque ti contraddico perchè in realtà è possibile riprogrammare anche l'8u2 (sotto windows sono 4 click) tramite usb quindi ricarichi il firmware 8u2 originale e programmi l'atmega, poi riprogrammi l'8u2 col tuo firmware..

Dunque posso, senza aggiunta di hw,
caricare il mio sw sull'ArduinoUno quindi riprogrammare il chip come se fosse Leonardo
e poi, tornare a ricaricare il firmware per riutilizzare ArduinoUno come nuovo??

ho capito??? :confused: :slight_smile:

allora l'ide di arduino non è fatto per programmare l'8u2.

ciò significa che devi imparare il C puro per poter lavorare con le librerie messe a disposizione da atmel che sono un poco più difficili di quello che sembra :stuck_out_tongue:

http://www.atmel.com/devices/ATMEGA8U2.aspx?tab=tools
a fondo pagina ti serviranno flip e toolchain (anche se ti consiglio di trovare AVR studio che è completo)
http://www.atmel.com/Images/doc8409.pdf

il primo ti mostra come programmarlo per renderlo un mouse generico il secondo è il datasheet.

dal vedere è più facile di ciò che sembra la programmazione intendo che ci sono già delle funzioni belle pronte per comandare tutto, insomma non è difficilissimo programmarlo dal vedere