Arduino UNO vs Leonardo

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à

Daedalus1632:
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à

in tal caso non importa la scheda perchè comunichi comunque via seriale (a meno che tu non voglia fare l'impossibile e creare un tuo device HID usb col suo driver per comunicare ma è da spararsi :wink: ) e ti serve il software lato pc per la "decodifica" dei messaggi :wink:

Quindi a questo punto cosa mi consigliereste di prendere?

Daedalus1632:
Quindi a questo punto cosa mi consigliereste di prendere?

entrambe :smiley:
ti spiego meglio:
se hai la possibilità di utilizzare la leonardo come programmatore ICSP (dovrebbe essere fattibile) puoi costruirti tu la tua scheda arduino uno programmando il bootloader del chip vergine e creando una piedinatura compatibile con gli shield.

ti crei il tuo pcb e con 7€ ti crei la tua scheda arduino, hai la leonardo, poi comprerai un adattatore usb<->seriale per la tua scheda (a meno che tu non voglia mettere un chip tipo ftdi da saldare smd per ogni scheda) quindi predisponi sulla tua scheda un connettore per il convertitore, alla fine avrai una leonardo ed una uno ad un prezzo relativamente basso.

naturalmente ciò dipende dalla tua capacità di fare i pcb ma di per se il circuito non è complicato e nemmeno difficile da fare, si può fare con la tecnica stampante laser+ferro da stiro.

questo è il mio consiglio così ogni scheda ti costerà circa 7€ (le cose che costano di più sono il micro vergine che viene sui 4€ e il quarzo 50 cent) e col convertitore seriale (prezzo tra gli 8€ e 20€) diventa una vera e propria scheda arduino compatibile con tutti gli shield.
e poi hai la leonardo per poter giocare con la usb

Guarda, considera che io parto con conoscienze praticamente nulle di elettronica.
SE la Leonardo è utilizzabile come programmatore ICSP (e non ho idea di come fare per saperlo), e SE non c'è troppo rischio di friggere il microcontrollore per uno che di resistenze non sa nulla, allora prenderei la Leonardo, altrimenti mi sa che mi conviene la UNO.

Sennò non è possibile fare il contrario? Prendere la UNO e crearmi più avanti la Leo?

beh la leo usa un micro che è disponibile solo nel package SMD per capirci, non vi è verso di una DIP.

per essere fattibile ovvio che è fattibile ma devi essere abile a saldare gli smd e poi anche a fare le piste adatte

Ma volendo potrei scrivere un driver per riconsocere la UNO come una periferica di gioco?

quando scrivi

  • 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

intendi che bisogna appunto scrivere il codice che manda un determinato segnale tramite seriale ad un determinato movimento del controller, o intendi qualcos'altro?

poi mi domando, hai detto che rischio di rallentare il codice perchè devo controllare continuamente la coda della seriale, ma non avviene la stessa cosa anche con la Leonardo, anche se non sono io ad implementarla?