I dati che il microcontrollore invia a Processing sono convertiti in grafico 2D e possono rappresentare il comportamento di un sensore o di un attuatore che lavora in ambiente Arduino.
Prima di iniziare, alcune istruzioni di base per programmare con Processing:
size(X,Y): rappresenta l'area del disegno
background(X): rappresenta lo sfondo dell'area del disegno; X variabile da 0 a 255
smooth(): evita la spigolosità delle forme disegnate
strokeWeight(X): rappresenta lo spessore del tratto delle forme disegnate con X intero
line(X1,Y1,X2,Y2): disegna una linea che parte dal punto X1,Y1 ed arriva al punto X2,Y2 espressi in pixel
triangle(X1,Y1,X2,Y2,X3,Y3): disegna un triangolo con i vertici in X1,Y1 X2,Y2 ed X3,Y3
quad(X1,Y1,X2,Y2,X3,Y3,X4,Y4): disegna un quadrato con i vertici in X1,Y1 X2,Y2 X3,Y3 X4,Y4
rect(X,Y,larghezza,altezza): disegna un rettangolo a partire da vertice in alto a sinistra X,Y avente una certa larghezza ed una certa altezza
ellipse(X,Y,larghezza,altezza): disegna una ellisse di centro X,Y e semiassi pari a larghezza ed altezza; se altezza = larghezza è ovvio che sarà disegnato un cerchio
arc(X,Y,larghezza,altezza,angolo di inizio, angolo di fine): disegna un arco
fill(X,Y,Z): definisce il colore di riempimento della forma disegnata secondo la regola RGB con X,Y,Z variabili da 0 a 255
nostroke(): disegna le forme prive di contorno
fill(X,Y,Z,trasparenza): disegna la forma con un colore X,Y,Z e con una trasparenza variabile da 0 a 100
stroke(X,Y,Z): definisce il colore del bordo della forma disegnata
textSize(X): imposta la grandezza del testo
textAlign(LEFT): allinea il testo a sinistra
text(testo da scrivere,X,Y): scrive un testo a partire dalla posizione X,Y overRect(X,Y,W,H) = true/flase: restituisce true oppure false a seconda se il puntatore del mouse è sopra la forma oppure no
mousePressed: fornisce 0 o 1 a seconda se il pulsante è premuto oppure no
mouse(X),mouse(Y): imposta le coordinate del mouse nell'area di disegno
etc...
Per impostare una comunicazione seriale tra arduino e Processing o tra Processing ed Arduino bisogna importare, prima di tutto, una libreria con il comando:
import Processing.serial.*
Poi seguono gli altri comandi che rendono la porta di Arduino attiva per la comunicazione:
Serial MyPort;: dichiara la porta attraverso la quale transitano i dati tra Arduino e Processing
MyPort = newSerial(this,"COM3",9600);: assegna alla MyPort il nome COM3 e la velocità di trasmissione dati
MyPort.Write(X);: trasmette ad Arduino il carattere contenuto nella variabile X etc...
Si nota che l'interfaccia (IDE) presenta una certa similitudine con quella di Arduino.
Un esempio che ho fatto è quello riguardante la carica di un condensatore elettrico il cui codice è disponibile al seguente link: Carica condensatore.
Nella zona compresa tra le righe 1 e 10 ho dichiarato un insieme di variabili che servono allo scopo.
Nella zona compresa tra le righe 13 e 32 (setup()) ho preparato la lavagna dove deve essere disegnato il grafico.
Il comando size(500,500) stabilisce la zona grafica in pixel
background(255) imposta lo sfondo con il colore bianco mentre tutte le altre istruzioni servono per disegnare la griglia, gli assi cartesiani, le denominazioni degli stessi e la graduazione numerica in verticale ed in orizzontale( vedi line(X1,Y1,X2,Y2) e text(testo,X,Y)).
Le istruzioni stroke(), strokeWeight(),fill() servono rispettivamente per stabilire il colore della linea, lo spessore del tratto ed in fine il colore del testo.
Le istruzioni triangle() e textSize() parlano da sole e mi servono per creare il verso degli assi cartesiani e per stabilire la grandezza del font.
Nella zona compresa tra le righe 38 e 50(draw()) ho destinato il codice ripetitivo per disegnare la curva di carica.
L'istruzione smooth() serve per smussare gli spigoli durante il disegno.
Ho poi creato un progetto che consente ad Arduino di inviare dati a Processing in modo che esso li traduca in grafico. Si tratta di una semplice simulazione matematica in quanto sulla scheda non esiste alcun componente.
Il codice di questa applicazione è disponibile al link: Arduino_RC e Processing_RC.
Nessun commento:
Posta un commento