Arduino Serial Plotter send text

Arduino Serial Plotter send text è un approfondimento della nuova funzione di invio messaggi seriali al plotter grafico.

Arduino Serial Plotter send text

Questo approfondimento segue il precedente articolo in cui ho presentato l’uscita della nuova versione dell’IDE 1.8.11 con la quale è stata rilasciata la funzionalità.

Arduino Serial Plotter send text

la funzionalità offerta dall’IDE arduino Serial Plotter send text è utile, come hai letto, quando vuoi variare dei valori nel tuo grafico.

In uno sketch che misura la temperatura di alcune stanze della casa in cui sono presenti dei sensori di temperatura potrebbe necessitare di differenti tarature, una per ciascun sensore.

In tal caso puoi scrivere uno sketch che ti permetta di ricevere i valori di taratura direttamente dal monitor seriale o, come in questo esempio, dal plotter seriale, il tutto mentre stai visualizzando il tracciato grafico delle rilevazioni eseguite.

L’invio di messaggi mediante protocollo seriale è molto utile in tantissimi casi ed avere questa funzione anche sul plotter seriale è certamente un vantaggio.

Lo sketch

Spesso un esempio è più chiaro ed efficace per spiegare i vantaggi offerti da questa nuova funzionalità.

Nello sketch, che leggi di seguito, ho deciso di variare il livello dell’asse di riferimento, quello verde, in funzione di un valore che invii tu al plotter seriale:

Arduino Serial Plotter send text demo

nei precedenti esempi, come in questo articolo, il punto di riferimento “0” è costante in quanto inserito nel codice con un “Serial.println(0);” che varia solo se lo modifichi e ricompili lo sketch.

Ma potresti riscrivere lo sketch in questo modo:

String inputString = "";
float inputValue = 0.0;
bool stringComplete = false;

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(inputValue); 
  ang++;
  delay(10);

  if (stringComplete) {
    inputString = "";
    stringComplete = false;
  }

  while (Serial.available()) {
    char inChar = (char)Serial.read();
    inputString += inChar;
    if (inChar == '\n') {
      stringComplete = true;
      inputValue = inputString.toFloat();
    }
  }
}

ottenendo la possibilità di inviare dei valori, mediante “send text box” del plotter seriale che permettano la variazione del valore di riferimento.

Trattandosi di uno sketch che simula dei valori disegnando delle sinusoidi, il punto di riferimento potrebbe esserti utile per verificare i valori attesi.

Descrizione dello sketch

Rispetto allo sketch dell’articolo “Plotter Seriale Arduino Ide 1.6” in questo esempio ho aggiunto le prime 3 linee in cui imposto tre variabili:

  • una stringa inputString che accoglierà i dati provenienti dal plotter seriale;
  • una variabile di tipo float che serve a memorizzare i valori convertiti in numero della precedente;
  • una variabile booleana che indica quando lo straming di dati sulla seriale è completo;

la funzione setup() e le successive variabili per memorizzare angolo e valore di conversione da radianti in gradi sono le stesse che hai già visto;

Le linee 11-17 della funzione loop() sono identiche a meno della linea 15 il cui valore scritto via seriale non è più uno “0” costante ma il risultato della conversione in float del valore ricevuto dal plotter seriale;

linee 19-22: se il valore di stringComplete sarà true azzeri il valore della stringa in Input e posizioni a false il valore stesso di quest’ultima;

La differenza maggiore è quella dettata dalle linee 24-31 in cui leggi lo straming seriale fino a quando il buffer dei valori provenienti dal canale Serial non è vuoto, questa cionsizione si verifica quando Serial.available restituisce false;

la linea 25 converte ogni carattere letto ( Serial.read ) sullo straming seriale nella variabile inChar;

la successiva linea 26: memorizza, accodandolo alla precedente lettera ricevuta il valore letto nella variabile inputString;

le linee 27-30: man mano che lo straming viene ricevuto ed il buffer svuotato si arriva al carattere di fine riga “\n” che, come dice la definizione stessa, serve a farti capire che la stringa è terminata.

All’interno del controllo sull’ultimo valore imposti il valore di stringComplete a true, che ti servirà alla linea 19 e converti il valore da String a Float usando il metodo toFloat() degli oggetti di tipo Stringa;

Il risultato dello sketch è simile a quanto puoi vedere nel video successivo.

Il video dell’arduino Serial Plotter send text

Il video dell’arduino Serial Plotter send text mostra come cambia il valore di riferimento in funzione di un valore passato mediante monitor seriale:

In conclusione spero ti sia chiaro come questa nuova funzionalità sia utile nei progetti in cui vuoi visualizzare i dati raccolti o rilevati in forma grafica con i soli strumenti messi a disposizione dall’IDE Arduino.

  • 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/arduino-serial-plotter-send-text.html

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.