Logs y trazas en Arduino, ¿qué está haciendo mi programa?

Uno de los mayores retos a los que se enfrenta un programador es encontrar los errores cuando tu programa no hace lo que se supone que debería de hacer. Si a esto le añadimos una placa con la que hacemos experimentos electrónicos pues entonces el problema es aún mayor: ¿he conectado correctamente los pines? ¿por qué no se enciende el LED/Motor/etc.?

Una manera relativamente sencilla es, cuando nuestro programa o en este caso nuestra placa hace algo, escribir una línea indicando qué estamos haciendo. A esto comúnmente se le conoce como tracear un programa o escribir traza o log (“trace” en inglés significa “seguir el rastro“). En este post vamos a ver como tracear un programa ejecutado en nuestra placa.

Escribir traza al puerto serie

Nuestro Arduino está conectado a nuestro ordenador por un puerto serie. Con este puerto enviamos nuestro programa a la placa, pero en realidad una vez enviado el puerto está libre, así que lo podemos utilizar tanto para enviar datos desde la placa como para recibir. En este caso desde la placa nos interesa escribir en el puerto serie.

Serial es un objeto que representa el puerto serie y para gestionar las comunicaciones con el puerto serie es el que vamos a utilizar. Vamos a ver algunos de sus métodos pero los tenéis todos aquí: referencia de Serial (puerto serie).

Para que nuestro programa escriba en el puerto serie:

  • Inicializamos el puerto serie dentro de setup() ejecutando la sentencia Serial.begin(velocidad_baudios).
  • Cuando queramos escribir traza, ejecutamos la sentencia Serial.println(cadena).
void setup() {
 Serial.begin(9600);
}

void loop() {
 Serial.println("Hola caracola");
 delay(1000);
}

Leer la traza del programa en el puerto serie

Nuestro programa está escribiendo traza en el puerto serie, ¿cómo leemos la traza?.

El Arduino IDE tiene una herramienta que se llama “Monitor serie” que precisamente sirve para leer el puerto serie. Para ejecutarlo:

Cómo ejecutar el monitor serie
Cómo ejecutar el monitor serie

Herramientas >> Monitor serie (Ctrl+Mayús+M)

Y el resultado del programa anterior sería el siguiente:

Ejemplo monitor serie
Ejemplo monitor serie

Este ejemplo, aunque simple, os enseña cómo escribir una traza y ver qué está haciendo nuestra placa: cada vez que vayamos a hacer una acción (como encender un LED) escribimos en traza “Encendiendo LED” sabemos que estamos realizando esa acción y podemos seguir el flujo de ejecución de nuestro programa en la placa.

Velocidad del puerto serie

¿Qué es exactamente un puerto serie? Pues es un puerto de entrada y salida en el que la información se transmite secuencialmente: primero un dato de información, después otro dato, etc.

Los datos que se tienen que transmitir se convierten a símbolos. En comunicaciones digitales tenemos 2 símbolos: HIGH (+5 voltios) y LOW (0 voltios) y por tanto un símbolo equivale a un bit.

Comunicación puerto serie

Para poder distinguir el comienzo de un dato se suele marcar el comienzo y final para que el receptor se pueda sincronizar.

Un baudio equivale a un símbolo por segundo, y por tanto, es la velocidad de transmisión. El puerto serie lo inicializamos a una velocidad de 9600 baudios, es decir, 9600 símbolos por segundo y como un baudio para este puerto es un bit, entonces estaremos transmitiendo a 9600 bits por segundo.

Más sobre el puerto serie

A diferencia de los pines, el puerto serie no lo hemos inicializado como salida o entrada. ¿Por qué? Pues porque es salida y entrada al mismo tiempo.

¿Significa esto que, además de enviar datos desde la placa Arduino al ordenador podemos enviar datos desde el ordenador a la placa Arduino?

Sí, claro. Es la manera en que estamos enviando el programa a ejecutar por la placa, pero es que además podemos enviarle información o comandos desde nuestro ordenador, como por ejemplo: enciende un LED. Esto ya lo veremos en otro post.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *