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:
1 2 3 4 5 6 7 8 9 |
void setup() { } void loop() { } |
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:
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:
1 2 3 4 |
void setup() { Serial.begin(9600); //Serial communication started at 9600 bits/sec } |
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:
1 2 3 4 5 |
void setup() { Serial.begin(9600); //Serial communication started at 9600 bits/sec Serial.println("Hola Mundo!"); // send "Hola Mundo!" over serial port } |
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:
1 2 3 4 5 6 7 |
void loop() { Serial.println("tic"); //print "beat"tic" on serial port delay(1000); //wait 1000 milliseconds Serial.println("toc"); //print "toc" on serial port. delay(1000); //wait 1000 milliseconds } |
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:
1 2 3 4 5 6 |
void loop() { if (Serial.available()>0){ //if there is data ready on serial port Serial.write(Serial.read()); //write on serial port what it has been read } } |
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).