Arduino UNO vs Leonardo

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?

Per gli shield menzionati la Leonardo va bene. Per ciò che devi farci la Leonardo forse è più facile da gestire lato PC.

allora vediamo un attimo, ho sentito parlare di xna, lo avrei gratis ma mai scaricato ne utilizzato (e come potrei su linux? :wink: )

comunque tu hai un gioco e vuoi comandarlo con arduino.
ciò che vuoi fare è fattibile ma in modo diverso in base alla scheda, ti elenco il modo:

  • Arduino UNO (o 2009)
    l'arduino lo programmi in modo che abbia un output su seriale sulla base di input hardware che riceve (es. pressione dal tasto "A" sulla seriale printa "A")
    lato "gioco" dovrai mettere un interrupt (non ricordo come si chiamano in programmazione microsoft, mi pare event) sulla porta seriale che quando riceve un carattere lo analizza e sulla base di ciò che legge fa ciò che deve.
    pro: sistema semplice e più economico, programmazione di semplice livello sia lato arduino che C# (.net nell'import degli IO comprende le porte seriali direttamente)
    contro: rischi di rallentare il codice, infatti ad ogni pressione vai a leggere la seriale, rischi di bloccare il programma. inoltre necessiti di un hardware appositamente programmato

  • Leonardo
    programmi la leonardo come periferica HID, quindi verrà vista come generico controller di gioco
    lato XNA dovrai creare un istanza per un joystick generico immagino
    pro: previa mappatura puoi usare qualsiasi controller tu voglia che non deve per forza essere arduino, sistema più stabile (XNA se non sbaglio contiene librerie fatte bene per i joystick).
    contro: programmazione più complicata soprattutto lato arduino

Si beh non voglio usarlo solo come joystick, sicuramente non sarà tra le prime cose che farò.. Ho intenzione infatti di creare il cubo LED (troppo figo XD) e di utilizzare dei sensori di luminosità/gas/rumore, e con i dati raccolti tracciare un grafico temporale (magari della variazione del mio russare durante la notte XD)
quindi vorrei fare una scelta sulla base anche di queste necessità