Iniciación a Arduino [3/9]: Salidas digitales – LEDs
Ya sabemos qué es Arduino (Introducción a Arduino [1/9]) y tenemos el Arduino IDE configurado y nuestra placa instalada y funcionando correctamente (Primeros pasos con Arduino [2/9]). ¡Estamos listos para empezar a cacharrear!
Índice de contenidos
Materiales necesarios.
- Placa Arduino.
- Breadboard.
- Resistencia con un valor cercano a 150 ohmios.
- LED.
- 3 cables «jumper» M-M.
Conceptos básicos.
A la breadboard también se la llama placa de prototipado o protoboard. Es una placa de conexiones que nos permite construir circuitos electrónicos sin tener que soldar. Si miramos la protoboard de forma que el ancho sea mayor que el alto, vemos que las dos primeras y las dos últimas filas están marcadas por unas líneas rojas y azules. Todos los agujeros de la línea roja están conectados entre sí horizontalmente, y lo mismo ocurre con la línea azul. Generalmente, usaremos las líneas azules para el GND (tierra) y las rojas para la alimentación. El resto de agujeros se dividen en dos paneles separados por un surco que atraviesa la protoboard de lado a lado. Cada uno de esos paneles tiene los agujeros conectados en vertical, es decir, en columnas. El surco corta la conexión.
Montaje.
Una vez que tenemos todos los materiales podemos empezar a montar nuestro circuito. Es un circuito simple, con todos los elementos conectados en serie, tal y como se ve en la imagen.
-
- El pin 13 de la placa Arduino conectado a la resistencia.
-
- Conectamos el otro extremo de la resistencia a la pata positiva del LED. Es decir, a la pata más larga del LED.
-
- Uno de los cables (uno azul en nuestro caso) lo conectamos desde la pata negativa (la más corta) del LED a cualquier agujero de la línea azul de la protoboard.
- Y por último, conectamos un cable (negro en nuestro caso, por el convenio de usar cables negros/azules para GND y rojos para la alimentación), desde cualquier agujero de la misma línea azul a cualquiera de los pines GND de la placa Arduino.
Primera prueba de nuestro circuito.
Si tu placa Arduino tiene cargado el programa de la entrada anterior (Primeros pasos con Arduino [2/9]) el led comenzará a parpadear automáticamente. Esto es porque el LED de la placa, identificado como «L», que usamos en la entrada anterior está conectado al pin 13 de la placa Arduino. De hecho, si miramos el código del programa que cargamos en Arduino IDE veremos que usa el pin 13. Si no entiendes el código tranquilo, vamos a explicarlo con más detalle más adelante.
Tu placa y tu LED deben de estar haciendo algo similar a esto:
Ahora vamos a cambiar el LED de pin, para que tengamos que tocar un poco de código en el Arduino IDE. Para ello, simplemente desconectamos el extremo del cable amarillo que está conectado en el pin 13 de la placa Arduino y lo conectamos en el pin 2, por ejemplo, quedando el circuito de la siguiente forma:
Aprendiendo a programar nuestra placa.
Una vez tenemos el circuito montado llega el momento de escribir el programa para cargarlo en la Arduino. En este caso es muy simple de hacer ya que solamente tenemos que cambiar un par de cosas en el código de ejemplo de la entrada anterior (Primeros pasos con Arduino [2/9]). Si no lo tenemos abierto lo abrimos haciendo clic en Archivo>Ejemplos>01.Basics>Blink en el Arduino IDE. Una vez abierto simplemente tenemos que cambiar el número 13 por el número 2 en cada línea en la que aparezca. El código debe queda así:
Conceptos básicos de la programación con Arduino.
Como observamos en el código, un programa Arduino consta de dos funciones fijas: setup() y loop().
Una función es un trozo de código que puede ser usado varias veces en cualquier parte del sketch. La primera línea de la función aporta información sobre la función, como su nombre, el tipo que devuelve y los dato que se le envía para trabajar, especificado entre paréntesis. Todo el código que se encuentre entre llaves { } se llama cuerpo de la función, y son el conjunto de instrucciones que la función ejecuta al ser usada.
Las funciones setup() y loop() son necesarias para que el programa funcione en Arduino, aunque las dejemos vacías.
setup()
La función setup() es llamada una vez, al inicio del sketch. Es el lugar apropiado en el que realizar las configuraciones, como configurar pines, por ejemplo. En nuestro caso, dentro de la función setup() decimos a nuestro programa que el pin 2 será del tipo salida con pinMode(2,OUTPUT).
loop()
La función loop() se ejecuta repetidamente de forma indefinida y es el núcleo principal que dicta el funcionamiento de todos los sketches. En nuestro caso, dentro de loop() decimos a nuestro programa que active el pin 2 con digitalWrite(2,HIGH), luego le decimos que se detenga el programa durante 1000 milisegundos, es decir, que detenga el programa durante 1 segundo, con delay(1000). A continuación le decimos que desactive el pin 2 con digitalWrite(2,LOW) y que vuelva a detener el programa otro segundo más. Una vez se termina de ejecutar la última instrucción de loop() se vuelve a ejecutar la primera de nuevo, y así repetidamente haciendo que nuestro LED parpadee sin parar.
Comentarios.
Además de las funciones setup() y loop() un sketch de Arduino tiene otros elementos. En los sketchs de Arduino, como en cualquier lenguaje de programación, podemos hacer comentarios. Un comentario es un bloque de texto o palabra que la placa Arduino ignorará a la hora de ejecutar el sketch. Por lo tanto, solamente sirve para hacer aclaraciones sobre el código. De esta forma, si pasado un tiempo leemos el código o lo hace otra persona, sabremos por qué hicimos lo que hicimos y con qué intención. Para escribir un comentario de una sola línea utilizamos dos barras inclinadas a la derecha (//). Si queremos escribir un comentario que sea un bloque de texto de varias líneas debemos meter el bloque de texto entre /* y */ quedando así:
/* Bloque de texto con comentarios */
Variables
Otro elemento muy importante en un sketch Arduino son las variables. Una variable es un lugar donde se almacenan datos. Tienen un nombre, un tipo y un valor. Por ejemplo:
int ledPin = 13;
declara una variable llamada «ledPin» de tipo «int» con valor 13. En el código de nuestro segundo circuito podríamos haber definido la variable «int ledPin = 2» justo antes de empezar la función setup() y, en lugar de poner 2 en cada línea en la que había un 13, pondríamos ledPin. De esta forma, si por algún motivo queremos cambiar el led al pin 4, por ejemplo, solamente tendríamos que cambiar el valor en una ocasión en el código, en lugar de en 3 líneas. Esto facilita mucho el trabajo de programar.
Las variables pueden ser de diferentes tipos, entre las que están:
- int: números enteros de -32.768 hasta 32.767.
- float: números con decimales de -3,4028235×10^38 hasta 3,4028235×10^38.
- char: caracteres sueltos como ‘a’ o ‘A’.
- String: cadenas de caracteres (frases o palabras) como «Hola Arduino».
Segunda prueba de nuestro circuito.
Llega el momento de probar si nuestro circuito y programa funcionan correctamente. Pulsando en el botón «verificar» compilamos el programa. Una vez termine pulsamos en el botón «subir» para cargar el programa en la placa Arduino. El resultado debe ser similar al siguiente:
Llegados a este punto ya debemos ser capaces de dejar volar un poco nuestra imaginación y mejorar estos ejemplos para que hagan lo que nos apetezca. Algunos ejemplos con los que practicar son:
-
- Cambiar la velocidad de parpadeo del LED para que se encienda y apague cada 0,5 segundos.
-
- Hacer que se mantenga encendido 3 segundos y apagado 1 segundo.
-
- Añadir más LEDs y hacer que uno esté encendido cuando el otro esté apagado y viceversa.
-
- Añadir más LEDs y que cada LED parpadee a una velocidad diferente.
- ¡Cualquier cosa que se te ocurra!
En este enlace de GitHub podréis encontrar algunos ejemplos resueltos con los que practicar además del código de los ejemplos usados en este tutorial.
Y hasta aquí la tercera parte del tutorial. Como siempre, cualquier sugerencia o consulta podéis hacérmela llegar enviando un correo electrónico a sugerencias@manusoft.es o dejando un comentario en la entrada.
Siguiente entrada del tutorial: Iniciación a Arduino [4/9]: Monitor Serie.