Plotter Seriale arduino IDE 1.6

Il plotter seriale è una funzione aggiunta dagli sviluppatori dell’IDE arduino dalla versione 1.6.7

plotter seriale arduino ide

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:

plotter seriale menu

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:

plotter seriale graph

ho iniziato la scrittura dello sketch da reference arduino.cc ed in particolare studiando la funzione sin ( seno ):

arduino reference sin function

Fonte: Reference arduino.cc

e la funzione cos (coseno ):

arduino reference cos function

Fonte: Reference arduino.cc

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:

plotter seriale graph

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.

  • Questo sito ed i suoi contenuti è fornito "così com'è" e Mauro Alfieri non rilascia alcuna dichiarazione o garanzia di alcun tipo, esplicita o implicita, riguardo alla completezza, accuratezza, affidabilità, idoneità o disponibilità del sito o delle informazioni, prodotti, servizi o grafiche correlate contenute sul sito per qualsiasi scopo.
  • Ti chiedo di leggere e rispettare il regolamento del sito prima di utilizzarlo
  • Ti chiedo di leggere i Termini e Condizioni d'uso del sito prima di utilizzarlo
  • In qualità di Affiliato Amazon io ricevo un guadagno dagli acquisti idonei qualora siano presenti link al suddetto sito.

Permalink link a questo articolo: https://www.mauroalfieri.it/elettronica/plotter-seriale-arduino-ide-1-6.html

3 commenti

    • Favale Vincenzo il 25 Marzo 2017 alle 11:25
    • Rispondi

    Grazie per la semplicità dell’esposizione.
    Vincenzo Favale

    • Domenico Di Cesare il 7 Febbraio 2018 alle 09:01
    • Rispondi

    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

    1. 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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.