Comunicando-por-puerto-serie

Empezamos a programar. Pero, ¿por qué empezar por comunicaciones por puerto serie? No parece lo más adecuado. Sin embargo, cuando se programa una placa controladora éste es el mejor modo de poder hacer debug del código. Cuando no sabemos qué está pasando o por qué un programa no funciona como esperábamos es necesario obtener información durante la ejecución. Trabajando con placas como la ZUM BT 328 lo más sencillo es mandar esta información por el puerto serie y monitorizarla, así que manos a la obra

Un programa vacío

Todos los programas en Arduino tienen la siguiente estructura mínima:

En la función setup configuramos todo lo que necesitemos posteriormente. En la función loop se implementa el código que luego se ejecutará continuamente en la placa. No te preocupes ahora si no entiendes nada. El objetivo de esta lección es que seas capaz de comunicarte con el ordenador usando puerto serie, aunque no entiendas muy bien qué está pasando.

Entra en Codebender y abre un proyecto nuevo, automáticamente te saldrá el programa vacío:

codebender_blank

Hola Mundo – Empezando a comunicar por el puerto serie

La configuración del puerto serie se debe realizar en la función setup. Para ello utilizamos el objeto Serial incluido en las librerías Arduino.

Basta que le digas a qué velocidad vas a querer comunicar con el ordenador. Esta velocidad la eliges tú, típicamente toma valores los valores 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, o 115200. La que se suele usar más habitualmente es 9600. Este número indica los bits por segundo a los que se transfiere la información a través del puerto serie. Obviamente, cuanto mayor es este número, comunicaremos a mayor velocidad. Bien, configuremos pues:

Esta instrucción empieza la comunicación serie a 9600 bits por segundo.

Vamos a enviar la cadena Hola Mundo por el puerto serie. Como solo queremos que se envíe una vez lo hacemos en la misma función setup:

En el siguiente video vemos todo el proceso de programación. Me vais a perdonar, pero la única placa que tengo a mano es una ZUM Mega, por eso la placa seleccionada es la Mega y no la ZUM BT, pero funciona igual para ambas (funciona igual para cualquier placa Arduino).

Todos los videos están grabados en HD 1080p, así que asegúrate de elegir la mejor calidad en Youtube.

Tic Toc

Ahora vamos a hacer un reloj de pared. Cada segundo hará tic, toc, para ello programamos la función loop, que se ejecutará continuamente:

Veamos en video todo el proceso:

Ecoooo

Para terminar vamos a complicarlo un poco más. Hasta ahora hemos escrito a través de puerto serie. Ahora vamos a recibir datos, y a escribir lo mismo que hemos recibido:

Este código es ligeramente más misterioso, vamos a explicarlo rápidamente, pero no te preocupes, esta lección es sólo para poder debuggear, más adelante haremos otra sobre comunicación serie más avanzada.

La función available() del objeto Serial devuelve el número de bytes disponibles en el puerto serie (para ser leídos). Por lo tanto, cuando hay datos disponibles (Serial.available()>0) los leemos (Serial.read()) y lo mismo que estamos leyendo lo escribimos por el puerto serie (Serial.write()). Dado a que no estamos incluyendo el cambio de línea automática el echo es seguido. Prueba tú mismo a ver qué pasa si usas println, ¿por qué?

Vamos a ver el último video de hoy. En la próxima lección veremos (probablemente) la declaración de variables y su uso.

En la sección de descargas puedes encontrar todo lo necesario para modificar los videos, añadir subtítulos o incluso añadir narración. Desgraciadamente no podemos compartir la música ya que tiene derecho de autor (que hemos pagado).