Ieri ho avuto il piacere di giocare con la seguente guida, che di fatto è un’unione di altre due guide, e permette di programmare l’Arduino in Java.
“Eh?”, diranno i puristi. Ebbene sì: caricando nel microprocessore uno sketch incluso tra gli esempi del PDE di Arduino (StandardFirmata), e creando un progetto Java sotto Eclipse (ma non siete obbligati ad usare un IDE, vi basta anche una mano di Vim) con giusto un paio di jar di Processing, una sorta di sottolinguaggio costruito per fare arte e programmare (non chiedetemi una definizione migliore, non saprei darvela, nemmeno io ho le idee chiarissime su cosa diavolo sia), è possibile di fatto impiegare l’Arduino come un oggetto remoto.
Ora, non vorrei che l’ultima definizione spaventasse qualcuno, ma il corso di sistemi distribuiti ha avuto i suoi effetti: nel codice Java diviene possibile, con questa modalità, creare un oggetto della classe Arduino (che trovate linkata nell’articolo di cui sopra), e su di esso chiamare i metodi corrispondenti alle API C++ che normalmente si usano per programmare la piattaforma; la classe stessa si occupa di comunicare via seriale con l’hardware Arduino e, tramite lo sketch caricato in precedenza, di eseguire in remoto i comandi e restituire il risultato direttamente in Java.
Ora, questo potrà sembrare una bella sega mentale e basta, ma in realtà apre alcune prospettive decisamente interessanti: per quanto, così facendo, si perda la caratteristica di standalone del circuito elettrico, dato che la comunicazione seriale diventa obbligatoria (tenete presente che il programma che caricate nel microprocessore si limita ad eseguire comandi remoti, non li memorizza), resta il fatto che trattare Arduino come un semplice oggetto, come tutte le altre cose in Java, permette una certa flessibilità sicuramente interessante, ed evita al programmatore di dover mettere le mani direttamente nel protocollo seriale per gestire la comunicazione stessa (oltre al fatto che si utilizza un linguaggio serio(TM), per quanto comunque il PDE di Arduino nasconda una parte del codice C++ necessario a far funzionare i vostri circuiti).
Insomma, non ho ancora fatto grossi esperimenti in merito, ma sicuramente è una modalità stimolante e da approfondire.
P.S.: rispetto all’articolo linkato in alto, è necessario aggiungere che deve essere importato anche il jar di RxTx, la libreria seriale, che trovate nella stessa cartella di Processing dove si trova Serial.jar; all’archivio Java va inoltre aggiunta la libreria librxtx.so, sempre dalla stessa cartella, che potete settare nelle proprietà del Build Path in Eclipse come nativa per rxtx.jar.
P.S.S.: includo anche uno zip del progetto di esempio dell’articolo, così com’è, con incluse anche le librerie richieste, già impostate nel progetto di Eclipse; resta il fatto che, ad un primo test, il led incluso nell’Arduino non si sia acceso, nonostante io abbia usato il pin 13, ma potrei aver cannato qualcosa (e, d’altro canto, l’autore dice di usare un led esterno, che io non ho). Arduino – Eclipse
[…] update del mio ultimo post su Arduino & Java: ho verificato un sospetto che avevo, ed in effetti il codice di test […]