Il plotter seriale è una funzione aggiunta dagli sviluppatori dell’IDE arduino dalla versione 1.6.7
Oggi la versione disponibile sul sito arduino.cc è la 1.6.9 contenente il “plotter seriale” come la 1.6.7 con cui vedi i valori inviati dal tuo sketch sullo schermo ma rappresentati graficamente nel tempo oltre che come valori numerici rappresentabili nel monitor seriale a cui sei abituato.
Plotter Seriale
Lo strumento Plotter seriale puoi richiamarlo dal menu strumenti:
e si visualizza sullo schermo del computer come una finestra con rappresentato sul lato sinistro un asse cartesiano riportanti i valori dal basso verso l’alto min,0,max:
- max: indica il valore massimo atteso dal grafico, si adatta ai valori che gli arrivano crescendo o decrescendo in funzione dei valori ricevuti e si presente all’apertura impostato su 5.0 ossia il voltaggio massimo sui pin della scheda genuino uno;
- 0: indica il valore centrale del grafico durante tutto il periodo di utilizzo;
- min: si comporta come il max ma per i valori min;
Come funziona il plotter seriale
la nuova funzione di plotter seriale esegue il render grafico di valori numerici inviati mediante i comandi Serial.print e Serial.println che ben conosci ed usi per ricevere info dai tuoi sketck arduino.
Ciascuno dei valori che desideri visualizzare con una linea di colore differente deve essere intervallato da uno spazio o da un “tab” perché il plotter seriale lo riconosca come valore univoco da rappresentare lungo l’asse delle ascisse che rappresenta il trascorrere del tempo.
Esempio di grafico rappresentabile
Come primo esempio di grafico che ho voluto rappresentare ho scelto le funzioni seno e coseno che, come sai, hanno un grafico sinusoidale i cui valori oscillano tra -1 ed 1:
ho iniziato la scrittura dello sketch da reference arduino.cc ed in particolare studiando la funzione sin ( seno ):
e la funzione cos (coseno ):
e leggendole il primo punto che ti salta all’occhio è il parametro che entrambe accettano è in radianti ed essendo abituato a ragionare in gradi è necessario convertire il valore angolare in gradi in radianti con la formula:
rad = grad / ( 180 / Pi )
in cui:
- rad: radianti
- grad: gradi
- Pi: Pi Greco ( π )
Lo sketch di test del plotter seriale
lo sketch che ho scritto è molto semplice, tuttavia lo riporto, come al solito nei miei articoli, e potrai leggere la descrizione riga per riga subito sotto:
void setup() { Serial.begin(115200); } int ang=0; float rad2grad=57.295779513; void loop() { Serial.print(sin(ang/rad2grad)); Serial.print("\t"); Serial.print(cos(ang/rad2grad)); Serial.print("\t"); Serial.println(0); ang++; delay(100); }
iniziando dalle linee 01-03: ho definito la funzione setup() il cui scopo è solo quello di attivare un canale di comunicazione seriale a 115200 baud;
linea 05: imposta una variabile di tipo integer denominata ang che userai per tracciare l’angolo su cui calcolare le funzioni sin e cos;
linea 06: imposta una variabile di tipo float denominata rad2grad che userai come costante di conversione da gradi a radianti e calcolata come ( 180 / Pi );
linea 09: invia al monitor seriale il valore risultante dalla funzione sin calcolata sull’angolo in radianti: ang/rad2grad;
linea 10: invia un carattere di “tab” dopo il valore del sin();
linea 11: invia al monitor seriale il valore risultante dalla dunzione cos;
linea 12: invia un carattere di “tab” dopo il valore del cos();
linea 13: invia il valore “0” seguito da ritorno a capo che termina la sequenza seriale inviata;
linea 14: incrementa l’angolo prima di ricalcolare il valore dell’angolo successivo;
linea 15: introduci un ritardo di 100 millisecondi tra un ciclo di loop ed il successivo;
Trasferisci lo sketch sul tuo genuino uno e apri il plotter seriale su cui visualizzerai:
in cui la linea azzurra è il risultato della funzione sin(), la linea arancio è il risultato della funzione cos() e la linea rossa è il valore 0 che hai aggiunto con la linea 13, un piccolo trucco per visualizzare l’asse delle ascisse in corrispondenza del punto 0 generandolo da sketch.
3 commenti
Grazie per la semplicità dell’esposizione.
Vincenzo Favale
Buongiorno
la domanda è semplice: come si fa ad impostare il valore max (ed anche min) dell’asse delle ordinate? se la variabile da rappresentare è il risultato di un calcolo, i valori sono necessariamente diversi e superiori a 5.
saluti
Autore
Ciao Domenico,
la scala si aggiorna automaticamente quando riceve valori sul serial output.
Effettivamente non ho provato con valori che superano i 1023 dell’INPUT analogico di Arduino.