Arduino UNO vs Leonardo

Salve a tutti! =)
Ho deciso di iniziare questa avventura, e mi trovo innanzitutto a dover scegliere con quale scheda partire.
Ho considerato ovviamente la versione UNO, ma ho visto anche la Leonardo, con micro USB e ATmega32u4, che fornisce connessione USB diretta permettendo anche il riconoscimento come dispositivo USB.

Quindi volevo chiedervi, in confronto alla UNO, la scheda Leonardo porta solo vantaggi o perde su qualche altro fronte?
Perchè sempre nelle specifiche della Leonardo leggevo:

SPI: on the ICSP header. These pins support SPI communication using the SPI library. Note that the SPI pins are not connected to any of the digital I/O pins as they are on the Uno, They are only available on the ICSP connector. This means that if you have a shield that uses SPI, but does NOT have a 6-pin ICSP connector that connects to the Leonardo's 6-pin ICSP header, the shield will not work.

Essendo una materia nuova per me, significa che può avere delle incompatibilità con alcuni shield o altri componenti?

Ci sono altre differenze di potenzialità che non ho considerato?

Grazie in anticipo! =)

La Leonardo ha il Controller saldato, mentre la UNO lo ha messo su un zoccolo. Se quello lo rompi puoi cambiarlo ma ci sono probabilitá a secondo del modo come guasti la scheda che anche il controller che fa l' interfaccia USB venga danneggiato e allora visto che é saldato non é sostituibile.
Schede che usano il SPI e lo aspettano sui pin 11,12 e 13 non funzionano con la Leonardo.

Ciao Uwe

Grazie mille Uwe per la risposta.

Beh devo dire che la cosa mi disturba abbastanza. Non so quanto sia facile friggere il controllore, ma essendo alle prime armi potrebbe anche accadermi, e non vorrei dover comprare la scheda nuova...

A questo punto preferisco un controllore DIP. Ma allora avrei bisogno di sapere: se acquistassi l'UNO, potrei collegarci un joystick e usarlo per comandare tramite USB un giochino XNA?

Grazie ancora! =)

Non so cos'è un gioco XNA però con l'Arduino ci puoi comandare un sacco di cose se lo fai diventare una semplice interfaccia che spedisce dei caratteri al PC a secondi dei comandi impartiti tramite un qualche dispositivo.

Ad esempio:

XNA è un framwork per lo sviluppo di videogiochi in ambiente .net.
Quindi mi confermate che se prendessi l'UNO potrei comunque comprare qualcosa di questo tipo e inviare i comandi al PC.
Certo mi sembrava parecchio assurdo...
Ma allora qual'è il vantaggio del Leonardo di preciso?

Leonardo ehm, Arduino Leonardo non Leo72, costa di meno e puó emulare una tastiera o un mouse USB.

Come avevo scritto l' interfaccia USB sul UNO é saldato. percui se per esempio conetti il pin 5V ai 12V friggi tutto sulla scheda Arduino UNO e non lo rianimi cambiando il ATmega DIP.
Ciao Uwe

Daedalus1632:
Ma allora qual'è il vantaggio del Leonardo di preciso?

uwefed:
Leonardo ehm, Arduino Leonardo non Leo72, costa di meno e puó emulare una tastiera o un mouse USB.

E' questa la differenza. Avendo un convertitore USB integrato può "apparire" al PC come una periferica HID. Per l'emulazione di un joystick o di una tastiera ci sono già 2 funzioni apposite:
http://arduino.cc/en/Reference/MouseKeyboard

io ho quasi sempre preso leonardo... mi sono sempre trovato abbastanza bene. Vero è che ci sono degli shield che non contemplano la Leonardo per via di taluni pin spostati però la leonardo ti da di contro qualche pin in più e questa cosa dell'usb che però onestamente non mi è mai interessata.
Svantaggi io sinceramente non ne ho da segnalare... ecco alcune librerie (anzi solo una che mi ricordi: per gli encoder) ho dovuto modificarle perchè non sapevano come era fatto il chip del leonardo (gli interrupt)... però tutto sommato ci ho impiegato anche poco...è imho solo questione di tempo: leonardo è giovane.
Per la possibilità di friggere il leonardo io sinceramente non ci ho mai dato tanto peso: se lo friggo tutto sommato non costa una follia: ne compro un altro: però dipende ovviamente anche da cosa devi farci e quanti devi comprarne di questi controller.... però l'uno che ho comprato era comunque smd quindi cambiare eventualmente il chip sarebbe stato improponibile.

A me a questo punto interessava sapere se anche con l'UNO, collegato il joystick, posso far muovere un giochino sul pc, o se è fattibile solo con Leonardo

Daedalus1632:
A me a questo punto interessava sapere se anche con l'UNO, collegato il joystick, posso far muovere un giochino sul pc, o se è fattibile solo con Leonardo

Mettiamola così: con la Leonardo è più facile che con la UNO. La Leonardo viene riconosciuta nativamente dal SO come periferica HID.

Invce con la UNO che giro bisognerebbe fare?

con la UNO dovresti inviare i dati in pura seriale e avere un programma che nel pc intrerpreta questi segnali ed esegue la funzione associata.
in pratica dovresti scrivere una sorta di driver per il tuo joystick

Mh la cosa mi tenta :smiley:
Ma in pura seriale cosa significa? Non tramite il cavetto USB?

Daedalus1632:
Mh la cosa mi tenta :smiley:
Ma in pura seriale cosa significa? Non tramite il cavetto USB?

La porta USB è vista come una seriale, COM o dev/tty a seconda del tuo SO.
"Leggere la seriale" significa che devi aprire la porta seriale del computer () e leggere i dati che arrivano. Se lo puoi fare con l'XNA bene, altrimenti ti serve un altro programma di interfaccia.
Oppure puoi farlo tramite porta PS/2 (se il tuo computer ne è dotato) "simulando" con un apposito software per l'Arduino (cerca in rete) una tastiera AT: in questo caso dal software basta leggere i dati come se fossero pressioni di tasti.

Mh allora a questo punto per cominciare penso mi prenderò la Leonardo, però mi spaventa il problema di incompatibilità che può avere dovuto ai pin diversi...
C'è un modo semplice per sapere quaoli shield non sono compatibili?

Grazie mille per l'aiuto ragazzi! =)

Daedalus1632:
Mh allora a questo punto per cominciare penso mi prenderò la Leonardo, però mi spaventa il problema di incompatibilità che può avere dovuto ai pin diversi...
C'è un modo semplice per sapere quaoli shield non sono compatibili?

Grazie mille per l'aiuto ragazzi! =)

Il produttore dovrebbe specificare per quali Arduino i suoi shield sono compatibili.

Ma gli shield "ufficiali" diciamo, sono compatibili tutti? O non è detto? Per esempio a me in futuro interesserebbe utilizzare almeno shield wifi e data logger, ma leggendo la documentazione, per quanto ne sappia meno di 0, mi par di capire che non sono compatibili con la Leonardo, perchè leggo che utilizzano i pin 11, 12 e 13...

Mi sa che allora andrò di UNO.

Grazie a tutti per i chiarimenti! =)

Lo WifiShield ufficiale è compatibile con la Leonardo perché comunica con il connettore ICSP aggiuntivo.
Il Data Logger non è uno shield ufficiale, è di Adafruit, ma il costruttore dichiara espressamente che è compatibile con la 2009, la UNO, la Leonardo ecc...

Works with Arduino UNO, Duemilanove, Diecimila, Leonardo or ADK/Mega R3 or higher. ADK/Mega R2 or lower are not supported.

EDIT:
ah, già. Come ho evidenziato in grassetto, la compatibilità è spesso riferita alla versione R3 delle schede. Devi controllare anche con che versione viene data la compatibilità.

Il chip FT232R (che fa da "traduttore" tra USB e UART dell'ATMega328) offre due modalità di utilizzo: diretto (per mezzo del driver fornito da FTDI) oppure come Virtual Comm Port (VCP).

Con l'Arduino Uno puoi comunicare sfruttando la VCP: in questo modo dal programma .net, per mezzo del controllo SerialPort, è possibile, dicendo al controllo a quale porta COMM corrisponde l'Arduino, inviare e ricevere dati. E' molto semplice implementare un protocollo, per il fatto che decidi tu come Arduino deve comunicare col programma e viceversa. Ad esempio potresti decidere di inviare comandi di lunghezza predefinita oppure di utilizzare un carattere che indica la fine di un comando. In C# .net si può leggere byte per byte man mano che il controllo riceve dati, oppure con il comando ReadLine attendere il carattere '\n' per leggere il buffer dalla porta seriale.

Avevo fatto delle prove l'anno scorso per comandare uno stepper motor inviando dei comandi via seriale da un programma che ho scritto in C# e non era particolarmente complicato.

leo72:
Lo WifiShield ufficiale è compatibile con la Leonardo perché comunica con il connettore ICSP aggiuntivo.
Il Data Logger non è uno shield ufficiale, è di Adafruit, ma il costruttore dichiara espressamente che è compatibile con la 2009, la UNO, la Leonardo ecc...

Works with Arduino UNO, Duemilanove, Diecimila, Leonardo or ADK/Mega R3 or higher. ADK/Mega R2 or lower are not supported.

EDIT:
ah, già. Come ho evidenziato in grassetto, la compatibilità è spesso riferita alla versione R3 delle schede. Devi controllare anche con che versione viene data la compatibilità.

Non avevo letto quella parte :blush: grazie :smiley:

Allora torno col dubbio >.<
Sono lungo nel prendere decisioni, consigliatemi! =)

Mi ispira anche il fatto di scrivermi il protocollo in C#, ma non vorrei partire con cose troppo complicate, non sapendo assolutamente nulla di porte seriali, COM, driver and stuff like that :astonished:

Voi che dite? Che mi prendo?