Guida al software Processing per Arduino

Processing è un linguaggio di programmazione che può interagire con la scheda hardware Arduino e consente di sviluppare diverse applicazioni come giochi, animazioni, contenuti interattivi e opere d’arte interattive. Eredita tutta la sintassi, i comandi e il paradigma di programmazione orientata agli oggetti dal linguaggio Java, ma in più mette a disposizione numerose funzioni ad alto livello per gestire in modo facile gli aspetti grafici e multimediali. È distribuito nei termini della licenza libera GNU General Public License (GPL), ed è compatibile con i sistemi operativi Linux, macOS e Microsoft Windows.

Processing è un linguaggio e uno strumento di sviluppo open source per scrivere programmi per computer. Risulta particolarmente utile quando vuoi che un computer “parli” con un Arduino, ad esempio per visualizzare o salvare alcuni dati raccolti da una scheda Arduino. Arduino viene fornito con alcuni esempi di base per comunicare con Processing  (in Esempi -> Comunicazione).

Il progetto Processing è stato avviato nel 2001 da Casey Reas e Benjamin Fry, del gruppo Estetica e Calcolo del MIT Media Lab. Uno degli obiettivi dichiarati di Processing è quello di fungere da strumento per non-programmatori, attraverso la gratificazione istantanea del feedback visivo. Il linguaggio si basa su quello Java, ma usa una sintassi semplificata e una modalità di programmazione grafica.

Un’introduzione al software Processing

Il software Processing – o, più precisamente, “Processing Development Environment” (PDE) – facilita la scrittura di programmi di elaborazione. I programmi vengono scritti nell’editor di testo e avviati premendo il pulsante Esegui (Run). In Processing, un programma per computer è chiamato sketch. Gli sketch sono memorizzati nello Sketchbook, che è una cartella posta sul tuo computer.

L’interfaccia fatta con Processing di una stazione meteo realizzata con Arduino Uno.

Gli sketch possono, ad esempio, disegnare grafica bidimensionale e tridimensionale. Il renderer predefinito  P2D serve per disegnare grafica bidimensionale. È veloce ma meno accurato, per il disegno di grafica 2D, del renderizzatore P3D, che rende possibile disegnare grafica tridimensionale. Entrambi i renderer sono accelerati se il tuo computer ha una scheda grafica compatibile OpenGL.

Ogni sketch contiene, in genere, oltre alle classi di oggetti che lo compongono, anche una cartella Data in cui viene inserito il materiale multimediale utile all’applicazione, come, ad esempio, immagini, font e file audio. Ogni applicazione creata può inoltre essere esportata come applet Java. Un’opportunità interessante se, ad esempio, usiamo il software per effettuare una simulazione stand-alone.

Le capacità di elaborazione di Processing sono estese con librerie e strumenti. Le librerie consentono agli sketch di eseguire operazioni oltre il codice di elaborazione principale. Ci sono centinaia di librerie fornite dalla community di Processing che possono essere aggiunte ai tuoi scketch per abilitare nuove cose, come suonare dei suoni, fare visione artificiale, lavorare con geometrie 3D avanzate, etc.

Processing ha diverse modalità di programmazione per rendere possibile la distribuzione di sketch su piattaforme diverse e la programmazione in diversi modi. La modalità Java è l’impostazione predefinita. Altre modalità di programmazione possono essere scaricate selezionando “Aggiungi modalità” dal menu posto nell’angolo in alto a destra del software Processing (PDE).

I primi passi nell’utilizzo di Processing

Il pacchetto del software Processing è scaricabile gratuitamente dal sito ufficiale di Processing (https://www.processing.org), e mette a disposizione un ambiente di sviluppo integrato (IDE). Ovviamente, occorre selezionare la versione per Mac, Windows o Linux, a seconda della macchina che hai. L’installazione è semplice: in Windows, estrai i file dal .zip e fai doppio clic sul file processing.exe.

I principali elementi di una schermata del software Processing.

Con un po’ di fortuna, la finestra principale di elaborazione sarà ora visibile. L’ampia area è l’Editor di testo, e c’è una fila di pulsanti nella parte superiore: questa è la barra degli strumenti. Sotto l’editor c’è l’area dei messaggi, e sotto quella vi è la console. L’Area messaggi viene utilizzata per i messaggi di una riga e la Console, invece, viene utilizzata per ulteriori dettagli tecnici.

Una volta aperto il software Processing sul tuo computer, puoi fare un copia e incolla del codice di elaborazione prodotto da altri, esattamente come si fa con gli sketch di Arduino IDE. Tuttavia, non è difficile muovere i primi passi nel programmare in Processing. Ad esempio, nell’editor digita quanto segue:

ellisse (50, 50, 80, 80);

Questa linea di codice significa, semplicemente, “disegna un’ellisse, con il centro di 50 pixel sopra da sinistra e 50 pixel verso il basso dall’alto, con una larghezza e un’altezza di 80 pixel”. Dopodiché, fai clic sul pulsante Esegui il (pulsante triangolo nella barra degli strumenti).

Se hai digitato tutto correttamente, vedrai un cerchio sullo schermo. Se non lo hai digitato correttamente, l’Area messaggi diventerà rossa e si lamenterà di un errore. Se ciò accade, assicurati di aver copiato esattamente il codice di esempio: i numeri dovrebbero essere contenuti tra parentesi e avere una virgola tra ciascuno di essi, e la linea dovrebbe terminare con un punto e virgola.

Una delle cose più difficili nell’iniziare con la programmazione è che devi essere molto specifico sulla sintassi. Il software di elaborazione non è sempre abbastanza intelligente per sapere cosa intendi e può essere abbastanza pignolo riguardo al posizionamento della punteggiatura. Ti ci abituerai con un po’ di pratica. Nel frattempo, ecco uno sketch che è un po’ più eccitante:

Questo programma crea una finestra larga 480 pixel e alta 120 pixel, quindi inizia a disegnare cerchi bianchi nella posizione del mouse. Quando viene premuto un pulsante del mouse, il colore del cerchio diventa nero. Esegui il codice, sposta il mouse e fai clic per vedere che cosa fa. Il pulsante Esegui diventerà un’icona quadrata di “arresto” (facendoci clic sopra con il mouse) dello sketch.

Se non si desidera utilizzare i pulsanti, è sempre possibile utilizzare il menu Sketch, che mostra la scorciatoia Ctrl-R (o Cmd-R su Mac) per Esegui. L’opzione Present cancella il resto dello schermo quando viene eseguito il programma, per presentare solo lo sketch. Puoi anche utilizzare Present dalla barra degli strumenti tenendo premuto il tasto Maiusc mentre fai clic sul pulsante Esegui.

Il prossimo comando importante è Salva. Puoi trovarlo nel menu File. Per impostazione predefinita, i tuoi programmi vengono salvati nello “sketchbook”, che è una cartella che raccoglie i tuoi programmi per un facile accesso ad essi. Seleziona dunque semplicemente l’opzione Sketchbook nel menu File per visualizzare un elenco di tutti gli sketch presenti nel tuo sketchbook.

Il menù File del software Processing, con le varie possibili opzioni.

Gli sketch di Processing sono fatti per essere condivisi. L’opzione Esporta applicazione nel menu File raggrupperà il tuo codice in un’unica cartella. Esporta applicazione crea un’applicazione per la tua scelta di Mac, Windows e/o Linux. Questo è un modo semplice per creare versioni autonome dei progetti che con un doppio clic possono essere eseguite a schermo intero o in una finestra.

Le cartelle dell’applicazione vengono cancellate e ricreate ogni volta che si usa il comando Esporta applicazione, quindi assicurati di spostare la cartella altrove se non vuoi che venga cancellata con la successiva esportazione. È sempre una buona idea salvare i tuoi sketch spesso. Mentre provi cose diverse, continua a salvare con nomi diversi, così puoi sempre tornare a una versione precedente.

Imparare a programmare con Processing

Imparare a programmare implica esplorare un sacco di esempi di codice: eseguirlo, modificarlo e migliorarlo finché non lo hai trasformato in qualcosa di nuovo. Con questo in mente, il download del pacchetto software di Processing include dozzine di esempi che dimostrano diverse funzionalità del software. Dunque, il passo successivo è iniziare a esplorarli con calma.

Per aprire un esempio, seleziona Esempi dal menu File e fai doppio clic sul nome di un esempio per aprirlo. Gli esempi sono raggruppati in categorie in base alla loro funzione, come Forma, Movimento e Immagine. Trova dunque un argomento interessante nell’elenco e prova un esempio. La guida Reference di Processing spiega ogni elemento del codice con una descrizione e semplici esempi.

Un esempio dei vari programmi e dei grafici realizzabili da un dilettante con Processing.

I programmi della guida Reference sono molto più brevi (di solito quattro o cinque righe) e più facili da seguire rispetto al codice più lungo che si trova nella cartella Esempi. Perciò, è consigliabile mantenere la Reference aperta mentre leggi o scrivi dei codici. Può essere navigata per argomento o in ordine alfabetico, ma a volte è più veloce eseguire una ricerca di testo all’interno della finestra del browser.

Osservando il codice nell’editor, vedrai che funzioni come ellipse () e fill () hanno un colore diverso dal resto del testo. Se vedi una funzione che non conosci, seleziona il testo, quindi fai clic su “Find in Reference” dal menu Guida. Puoi anche fare clic con il pulsante destro del mouse (o Ctrl-clic su un Mac) e scegliere “Find in Reference” dal menu che appare. Trovi la Reference anche dal menù Guide.

In Processing, ogni sketch deve contenere almeno una classe principale, in cui sarà presente una funzione setup e una funzione draw: la prima viene invocata una sola volta al lancio dell’applicazione, mentre la seconda viene eseguita per ogni frame (un po’ come loop in Arduino). Ma ciò sarà molto più chiaro con alcuni semplici esempi proseguendo nella lettura di questo articolo.

Una simulazione del moto browniano di una molecola con Processing. (fonte: Wikipedia)

Come usare Processing con Arduino

Processing è utile sia quando vuoi scrivere programmi per elaborare i dati provenienti da una scheda Arduino sia quando vuoi scrivere altri programmi di elaborazione e vuoi farli parlare tra loro. Ciò funziona meglio per la comunicazione di informazioni semplici. Se si desidera controllare una scheda Arduino da Processing, è possibile utilizzare la libreria Arduino per Processing.

Ecco come. Infatti, una volta che sai come inviare dati da Arduino a Processing e viceversa (anche simultaneamente!), sei pronto per progetti davvero interessanti. Unendo Arduino e Processing, puoi fare cose come visualizzare i dati di un sensore in tempo reale, o creare un guanto con i sensori flessibili nelle dita che fanno apparire dei pinguini sullo schermo, e tanto altro ancora.

Apriamo dunque il software Arduino e nella schermata dello sketch di Arduino (non in quello di Processing!) facciamo un copia e incolla del codice che trovate qui sotto. Esso avvia la comunicazione seriale da Arduino al nostro computer con una velocità di trasmissione di 9600 baud. Il programma, in particolare, dice di inviare dati (in questo caso la scritta “Hello world”, ovvero “Ciao, mondo”) ogni 100 millisecondi.

Tutto ciò che resta da fare è collegare la scheda Arduino, selezionare il tipo di scheda (in Strumenti -> Tipo scheda) e poi la porta seriale (in Strumenti -> Porta seriale) e premere il pulsante “Carica” per caricare il codice sul Arduino. Ora siamo pronti a vedere se possiamo magicamente (o tramite il codice) rilevare da Processing la stringa “Hello, world!” che stiamo inviando da Arduino.

Come appare lo sketch dopo che lo avrete incollato sulla schermata di Arduino.

Il nostro compito ora è trovare un modo per ricevere ciò che il nostro sketch di Arduino sta inviando. Fortunatamente, Processing viene fornito con una libreria seriale progettata proprio per questo tipo di cose. Pertanto, dopo aver scaricato e installato la versione più recente di Processing adatta per il proprio sistema operativo, aprila. Dovresti vedere qualcosa di simile a questo:

Come vedete, assomiglia molto ad Arduino. Ciò non deve affatto meravigliarvi. Infatti, il software Arduino si basa, in realtà, su una parte di Processing: questa, d’altra parte, è la bellezza dei progetti open-source. Una volta che abbiamo uno sketch di Processing aperto, il nostro primo passo è quello di importare la libreria seriale. Vai a Sketch-> Importa libreria-> Seriale, come mostrato di seguito:

Ora dovresti vedere una riga come “import processing.serial. *;” nella parte superiore del tuo sketch. Magia! Sotto la nostra dichiarazione di importazione dobbiamo dichiarare alcune variabili globali. Tutto ciò significa che queste variabili possono essere utilizzate ovunque nel nostro scketch. Aggiungi queste due righe sotto la dichiarazione di importazione:

Il codice che, dopo il copia e incolla in Processing, puoi caricare su Arduino.

Per ricevere qualsiasi comunicazione seriale, dobbiamo prendere un oggetto seriale (che abbiamo chiamato myPort, ma puoi chiamarlo come vuoi), il che ci permette di ricevere su una porta seriale del nostro computer qualsiasi dato in arrivo. Abbiamo anche bisogno di una variabile per ricevere i dati effettivi in ​​arrivo. In questo caso, dal momento che stiamo inviando una stringa (la sequenza di caratteri “Hello, world!’) da Arduino, vogliamo ricevere in Processing una stringa.

Proprio come Arduino ha setup () e loop (), Processing ha setup () e draw () (invece di loop). Con il setup () di Processing che abbiamo appena illustrato, troveremo la porta seriale a cui è collegato Arduino e configuriamo il nostro oggetto seriale per ricevere dati da quella porta. Se premi il pulsante “Esegui” (e il tuo Arduino è collegato con il codice precedente caricato), dovresti vedere una piccola finestra a comparsa, e dopo un secondo dovresti vedere “Ciao, Mondo!” nella console di Processing.

Bene, inviare – viceversa – i dati da Processing ad Arduino è altrettanto facile. Se ora infatti copiate il seguente sketch su Processing e poi lo caricate su Arduino, sarete in grado di accendere il LED posto vicino al pin 13 della vostra scheda Arduino semplicemente cliccando

Il nuovo sketch comincia in gran parte come il precedente: importiamo la libreria seriale e dichiariamo una variabile di oggetto seriale globale per la nostra porta in alto, e nel nostro metodo setup () troviamo la nostra porta e poi inizializziamo la comunicazione seriale su quella porta con la nostra variabile seriale a 9600 baud. Useremo anche il comando size (), per darci una piccola finestra in cui fare clic, che attiverà il nostro sketch per inviare qualcosa sulla porta seriale ad Arduino.

Nel nostro ciclo draw (), inviamo tutto ciò che vogliamo sulla porta seriale usando il metodo write dalla libreria Seriale di Processing. Con questo sketch, invieremo un “1” ogni volta che clicchiamo con il mouse nella finestra di elaborazione. Lo stamperemo anche sulla console, solo per vedere che stiamo effettivamente inviando qualcosa. Se non facciamo clic, invieremo invece uno “0”.

Ciò che vedremo sul nostro computer eseguendo questo sketch. Si dovrebbe vedere un gruppo di “1” apparire nell’area della console ogni volta che si fa clic con il mouse nella finestra.

Per finire, per far sì che Arduino veda questi dati inviati e faccia qualcosa, potete copiare su Processing il seguente sketch, che cerca gli “1” in arrivo da Processing e, se li vede, accende il LED vicino al pin 13 della scheda Arduino Uno (quindi non è in genere necessario un LED esterno per vedere il risultato).

Nella parte superiore del nostro sketch, abbiamo bisogno di due variabili globali: una per contenere i dati provenienti da Processing e un’altra per dire ad Arduino a quale pin il nostro LED è collegato. Dopodiché, nel nostro metodo setup (), imposteremo il pin del LED su un’uscita, dal momento che stiamo alimentando un LED, e avvieremo la comunicazione seriale a 9600 baud.

Infine, nel metodo loop (), esamineremo i dati seriali in arrivo. Se vediamo un “1”, impostiamo il LED su HIGH (o on), e se non lo facciamo (ad esempio vediamo uno “0”), spegniamo il LED. Alla fine del ciclo, mettiamo un piccolo ritardo per aiutare Arduino a mantenere il flusso seriale. Se carichi questo codice sul tuo Arduino ed esegui lo sketch Processing descritto in precedenza, dovresti essere in grado di accendere il LED semplicemente facendo clic all’interno dell’area di disegno.

Naturalmente, nel software Processing troverai numerosi esempi che ti aiuteranno a familiarizzare con le varie applicazioni concrete più comuni. Se si desidera inviare più valori da un sensore, è una buona idea contare il numero di byte che ci si aspettano, in modo da sapere come analizzare correttamente i dati ricevuti. L’esempio (v. figura qui sotto) fornito con Arduino fornisce un ottimo esempio di ciò.

I numerosi esempi pronti all’uso che trovate nel pacchetto software Processing.

Leave a Reply