Skip to content

Arduino: Hola mundo

3 mayo, 2013

Cuando aprendes un nuevo lenguaje de programación el primer ejemplo es generalmente el “Hola Mundo”, cuyo único cometido es imprimir la cadena de texto “Hola Mundo” por pantalla.  En el universo de Arduino la primera aplicación que se prueba suele ser el código de “blink”, un programa para hacer parpadear un simple LED.  La complejidad es prácticamente nula pero nos permite familiarizarnos con el entorno de desarrollo y probar si el sistema funciona correctamente.

Yo lo he usado en infinidad de ocasiones para verificar que las placas Arduino que distribuyo estén operativas y aconsejo que sea lo primero que se haga cuando se reciben.  Además, la práctica totalidad de Arduinos incorporan un diodo LED en la misma placa para facilitar las pruebas, por lo que no son necesarios componentes externos.

El código de “blink” es un sketch, ése es el nombre que se les da a los programas fuente en esta plataforma y viene por defecto entre los ejemplos del IDE de Arduino.  Vamos a ver cómo cargarlo, compilarlo, enviarlo al Arduino y verificar si todo está funcionando bien.  En este caso haremos la prueba con un Arduino Mega 2560; el entorno de desarrollo será el IDE 1.5.2 bajo Window.

Primero lanzaremos el IDE haciendo doble click sobre el icono del escritorio o ejecutando la aplicación “arduino.exe”

Instalación Arduino 1

Se abrirá el entorno de desarrollo con un proyecto vacío y dos funciones, setup y loop.  Pronto hablaremos de ellas y cómo se utilizan.

Instalación Arduino 2

Lo siguiente será indicarle al IDE cuál es la placa de Arduino que queremos programar.  En nuestro caso la placa Mega 2560, como ya habíamos dicho.  Conectaremos el cable USB a la placa y al ordenador de desarrollo.  Si todo va bien debería lucir el LED de encendido (marcado como ON) en la placa.  Si no es así, es que algo está fallando y deberíamos comprobar la conexión USB (probar en otros puertos y con otros cables) y verificar que el driver está instalado en nuestra máquina de desarrollo.

Arduino Power on

En el menú principal, Herramientas->Board, escogeremos la placa que sea compatible con la nuestra y nos aseguraremos de que está habilitado el puerto COM apropiado

Instalación Arduino 2.2Instalación Arduino 2.3

Ahora cargaremos el código de Blink, que para nuestra comodidad se distribuye junto con el IDE, en una carpeta de ejemplos.  En el menú principal iremos a Archivo -> Ejemplos -> 01.Basics -> Blink.  Una vez cargado podremos ver su código.  Vemos que se compone de varias líneas de comentarios: se emplea el marcador  // para indicar un comentario de una sola línea (desde el punto donde se encuentra hasta el siguiente salto de línea se tratará como un comentario)  y los marcadores /* y */ para delimitar un comentario de varias líneas.  Si tienes nociones de programación en C notarás que la sintaxis es muy similar.

Instalación Arduino 3

La siguiente línea: int led = 13 asigna a la variable de tipo entero (‘integer’) el valor decimal 13, en este caso el número corresponde a una patilla de salida del Arduino, la número 13.  Es decir, le va a indicar dónde está conectado el LED.

Después le sigue la función setup que no tiene parámetros (no recibe valores) “void setup()” y que tampoco devuelve valor alguno “void setup()“.  En esta función se ejecuta la instrucción pinMode, se trata de una función interna ya definida que establece si una de las patillas del Arduino es de entrada o de salida; OUTPUT es una constante definida por defecto en Arduino; pinMode(led, OUTPUT); indica que la patilla número 13 será una línea de salida.  La función setup es uno de las dos que como mínimo un proyecto Arduino debería implementar, se ejecuta solamente una vez, nada más iniciarse el dispositivo y sirve para configurarlo.

Tras ésa encontramos la segunda función necesaria, loop.  Tampoco recibe (no tiene parámetros) ni devuelve valores.  Su propósito es ejecutar, una y otra vez, el código que encierra entre las dos llaves: en este caso digitalWrite  y  delay.  La primera, digitalWrite(led, HIGH); escribe en la patilla digital (digitalWrite) número 13 (led) el valor predefinido HIGH, que corresponde a un “1” lógico.  Después, la instrucción delay(1000); hace un retardo de 1.000 milisegundos (= 1 segundo) . Escribe el valor predefinido LOW (“0” lógico) en la patilla 13 y realiza otro retardo.  Como hemos indicado antes, el ciclo se repetirá indefinidamente: nivel alto, retardo, nivel bajo, retardo,nivel alto, retardo…  Recuerda que un valor alto también llamado ‘1’ lógico equivale a poner tensión positiva en la patilla (generalmente 5V ó 3,3V)  Un ‘0’ lógico equivale a conmutar la línea a masa o cero voltios (0 v).  En el primer caso la patilla  conducirá corriente y se iluminará el LED y en el segundo no conducirá corriente y el LED se apagará.  Como ves, se trata de algo sencillo de entender (aunque hay matices).

Una vez que tenemos el código listo lo compilaremos para comprobar si hay errores.  Para ello pulsaremos en el icono de “Verificar” o a través del menú principal: Programa -> Verificar/Compilar (o pulsando CTRl+R)

Instalación Arduino 4

Si todo va bien y no hay errores lo indicará en la ventana inferior del IDE.

El siguiente paso es “subir” el código generado a nuestro Arduino, para ello pulsaremos en el botón “Subir” o bien mediante el menú principal Archivo -> Subir (o CTRL + U)

Instalación Arduino 2.4

Fíjate que apenas hemos usado 1.662 bytes del total disponible, no está mal…

Al transferir el código veremos que parpadean los LED de transmisión de datos en el Arduino y que poco después uno de los LED de la placa, el que está marcado como ‘L’, se activa con una cadencia de dos segundos entre cada parpadeo (esto es, un segundo encendido y un segundo apagado).

La dificultad de un sistema así está en conocer las distintas instrucciones que soporta el IDE, la sintaxis de programación, los puertos del Arduino, las capacidades grosso modo del µC y poca cosa más, y es tan sencillo que invita a experimentar.  Puedes probar a cambiar los valores de retardo y compilar y subir el código para ver los resultados.

Por ejemplo, prueba a ponerle 100 milisegundos en cada uno de los dos retardos y verás que parpadea diez veces más rápido; o a ponerle 10o durante el encendido y 750 durante el apagado, ahora el efecto es más interesante aún y si te fijas, en ninguno de estos dos casos ha cambiado el tamaño del fichero final 1.662 bytes, algo lógico.

Sencillo ¿verdad?  Piensa ahora en todos esos puertos donde conectar diferentes LEDs y en todos los proyectos que podrías montar 😀

Sin embargo un proyecto Hola Mundo no sería tal si no imprimiese la cadena “Hola mundo” por pantalla, así que prueba a modificar el setup de tu programa por este otro:

void setup() { 
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT); 
  Serial.begin(9600);
  Serial.println("Hola Mundo");
}
Arduino Blink serial

Y activa el monitor serie menú Herramientas->Monitor Serie (o CTRL+Shit+M).

Arduino Blink serial monitor

Ahora asegúrate de que el parámetro de velocidad del monitor serie coincide con el que hemos indicado en nuestro código (9600) si no coincide puedes cambiarlo seleccionando el valor apropiado en la lista desplegable.

Arduino Blink serial monitor 2

Ahora tenemos comunicación serie RS232 con sólo 4.444 bytes de programa.  Básicamente lo que hace ahora nuestro programa es crear una instancia del objeto Serial (que representa el primer puerto serie del Arduino, marcado en la placa como TX0/RX0) pasándole el valor 9600, que es la velocidad a la que queremos configurarlo.  Se trata de un puerto serie compatible RS232 con niveles TTL que, conectado a cualquier otro dispositivo, nos permite enviar y recibir información con este protocolo.  El objeto Serial tiene apenas ocho métodos de los que ya has visto dos: begin, para ponerlo en marcha y println para imprimir un texto y un salto de línea.  Otros métodos de este objeto son print, que imprime un texto pero no añade automáticamente el salto de línea como println; write y read, que se utilizan para enviar y recibir valores binarios (en ocasiones con print y println no podemos enviar toda la información que deseamos); end, desconecta las patillas del puerto serie para que puedan ser usadas como líneas de E/S digitales; available informa del número de caracteres que esperan ser leídos del buffer de entrada y flush vacía el buffer de entrada.   De momento nos interesan sólo begin, print y println, pues las utilizaremos como información de depuración, y serán muy útiles para informarnos del estado de nuestro Arduino, el punto del programa en que se encuentra, contenido de variables, etc.

Te habrás dado cuenta también de que la placa Mega2560 no se conecta al ordenador mediante RS232 sino mediante USB; a nivel de hardware es así, pero a través del USB se están codificando las señales de la UART (comunicación serie) Esto lo realiza el pequeño integrado que puedes ver en esta imagen, que no es otro que un ATmega32, otro µC de la familia Atmel AVR.  En otros dispositivos, como el Arduino Nano, la conversión se realiza con el integrado FTDI FT232.  Y una última cosa con respecto al puerto serie de los Arduino: son compatibles RS232 a nivel TTL, es decir, no puedes conectar directamente un Arduino a un puerto serie porque lo quemarías: el protocolo RS232 define unos niveles de tensión de hasta +15 V y -15 V para niveles bajo y alto respectivamente, mientras que TTL define un nivel bajo como 0 V y uno alto como 5 V (resumiéndolo mucho)

En próximas entradas complicaremos aún más las cosas pero verás las capacidades y versatilidad que tienen estos dispositivos.  Por ejemplo descubrirás cómo hacer un completo entrenador Morse para naúfragos…

 

Recuerda que nos mudamos. nuestra nueva dirección es:

http://arrizen.com

Anuncios

From → Arduino

Dejar un comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: