Todos los que usamos el editor de Arduino estamos acostumbrados al Monitor Serie o Serial Monitor para ver los datos que se envían por el puerto serie del Arduino. Pero junto a él, en el menú «Tools», hay otra herramientas que permite ver estos datos forma visual el Serial Plotter que dibuja una gráfica (o varias) con los datos que le devuelva el puerto serie.
Su uso es muy sencillo los datos tiene que seguir ir codificados de la siguiente manera:
- En cada linea van los datos separados por coma y espacio «, «
- Cada nueva linea va separada de la anterior por un salto de linea
La forma mas sencilla de entenderlo es con este código:
Serial.print(var1);
Serial.print(", ");
Serial.print(var2);
Serial.println();
Si bien no es una herramienta muy avanzada y tiene bastantes limitaciones sirve para visualizar datos visuales de una forma sencilla. Solo puede representar un tipo de gráfica, el tiempo en el eje horizontal y el valor de la variable en el eje vertical. Con este tipo de gráficas tienes el problema de que algunos datos son muy rápidos y serial plotter no permite almacenar la gráfica para revisarla.
Veamos un ejemplo donde se muestran varias gráficas simultáneamente:
float t = 0;
float oldDataT = 0;
float f = 1; //frecuencia
unsigned long oldMillis = 0;
unsigned long nowMillis = 0;
void setup() {
Serial.begin(9600); //iniciamos el Serial para mostrar la gráfica
while (!Serial) {}
}
void loop() {
nowMillis = millis();
double dt = double(nowMillis - oldMillis)/1000;
t += dt;
double tf = t*f;
double sawtoothW = tf;
double sinW = sin(tf*2*PI);
double posSinW = sin(tf*PI);
double squareW = (sin(tf*2*PI) > 0) ? 1: 0;
double triangleW = (sin(tf*2*PI) > 0) ? 2*tf: 2-(2*tf);
if(t - oldDataT > 0.05){ //si no lo datos van demasiado rápidos
oldDataT = t;
Serial.print(sawtoothW);
Serial.print(", ");
Serial.print(sinW);
Serial.print(", ");
Serial.print(posSinW);
Serial.print(", ");
Serial.print(squareW);
Serial.print(", ");
Serial.print(triangleW);
Serial.println();
}
oldMillis = nowMillis;
if(t >= 1/f){ //cuando alcanza un periodo se reinicia
t = 0;
oldDataT = 0;
}
}
El resultado es el siguiente:

En la imagen se pueden ver gráficas de varias formas generadas desde Arduino.
Un ventaja que tiene este sistema es que los datos son compatibles con el formato CVS, habitual cuando se trabaja con datos.
Añadir guías a las gráficas
Hay algún truco que podemos usar para mejorar la visualización de las gráficas. Establecer guías, una guía no es nada más que una línea recta paralela al movimiento del gráfico y que tiene siempre un valor fijo. Se puede establecer una guía poniendo un valor fijo en los datos que se devuelven. Se usan como referencia visual. Si conoces los máximos y mínimos del valor puedes establecer otras dos guías una en cada valor y así evitar que la gráfica vaya dando «saltos» como a veces ocurre cuando varia mucho el valor.
Puedes ver el vídeo sobre este tema en mi canal de Youtube: