Vamos a conocer la plataforma de prototipado de electrónica abierta ARDUINO, basada en software y hardware libre.
Arduino
- Arduino es una plataforma de prototipado de electrónica abierta.
- Se basa en software y hardware libre: Nos da libertad para ejecutarlo con cualquier propósito, estudiar cómo está hecho y modificarlo, redistribuir copias.
- Es flexible y de fácil uso.
Ecosistema de Arduino
Hardware
- Placa microcontroladora de entradas y salidas.
- Arduino UNO es el modelo más popular.
- Tenemos componentes de electrónica discreta y módulos en placas presoldadas que conectan los pines.
Entorno de desarrollo
- Necesario para escribir código, depurarlo, compilarlo y cargarlo en la placa, y comunicarnos con la placa.
Software
- Lenguaje con el que se programan las placas de entradas y salidas.
- Basado en C++, programación orientada a objetos con dos estructuras fundamentales: setup y loop.
- Gran cantidad de librerías que aumentan las funcionalidades y permiten controlar los dispositivos de forma sencilla.
Soporte en red
- La web de Arduino nos muestra gran cantidad de información: Lenguaje de programación, proyectos, guías, hardware,…
- También hay blogs y canales de Youtube de usuarios de arduino. Algunos ejemplos son Instructables, Make y Adafruit.
Conceptos básicos sobre Arduino
Qué es un microcontrolador
- Es un circuito integrado y programable.
- Posee todos los componentes del ordenador: CPU, memoria, almacenamietno y dispositivos de entrada y salida.
- Arduino utiliza un ATmega328, que cuenta con 300 millones de transistores.
- Son importantes por ser económicos, flexibles (facilidad de programación) y tener una gran velocidad de operación. Ha dado lugar a una revolución tecnológica, propiciando que se incluyan en gran cantidad de dispositivos.
Funcionamiento
- Lectura de entradas > Procesado de la información > Decisión de la actuación > Actuación sobre las salidas.
Entradas y salidas
- Una señal analógica varía de forma continua entre un mínimo y un máximo, pudiendo tomar todos los valores intermedios.
- Una señal digital es aquella que solamente toma dos valores: uno mínimo y otro máximo.
- Ventajas de los sistemas digitales:
- Rapidez de procesamiento y transmisión sencilla de datos.
- Fácilmente programables con lenguajes de alto nivel.
- Almacenamiento sencillo de información y sin límites.
- Menos susceptibles al ruido, pues pueden detectarse valores ruidosos.
- Menor costo.
- Capacidad de integración dado su pequeño tamaño.
- Diseño modular.
- Desventajas de los sistemas digitales:
- Nuestro mundo es analógico, por lo que esos valores deben convertise en digitales.
Arduino UNO: Conexiones
Prácticas con Arduino UNO
1: Hola Mundo
- Nos introduce en la estructura del código de Arduino.
- Es un recurso al que podemos recurrir para comprobar que el sistema compila y carga correctamente en la placa.
- Nos iniciamos en este lenguaje desde la perspectiva de «aprender haciendo».
La finalidad de nuestro sistema es encender y apagar un LED de forma repetitiva o cíclica.
El código de Arduino se divide en 3 partes:
- La primera se encarga de las variables globales.
- La segunda, el setup, posee la característica de que se ejecuta una sola vez. Se utilizará para realizar la configuración del sistema.
- La tercera es el Loop, que se ejecuta de forma cíclica y es donde colocaremos el cuerpo de nuestro programa.
Este es el diagrama de flujo del programa que vamos a realizar, que consta de los siguientes elementos:
Y este es el código de Arduino:
- La primera parte suele estar dedicada a comentarios explicativos del funcionamiento del programa. Para hacer comentarios de tipo párrafo utilizaremos: /* */
Los comentarios de línea irán precedidos de: // - A continuación, encontraremos la declaración de variables globales. En el caso, hemos declarado la variable ledPin y le hemos asociado el Pin 13.
- Le sigue la función Setup. En el caso mostrado, al utilizar una salida digital, debemos configurarla, ya que los elementos digitales pueden ser tanto de entrada como de salida. Para ello nos valdremos de la instrucción pinMode. Nos pide el Pin y asociar un valor de salida o de entrada.
- Pasamos al Void Loop, el cuerpo de nuestro programa. Para establecer 5V, utilizaremos la función digitalWrite, con el Pin del LED y los valores alto o bajo. Para esperar un segundo utilizaremos la función delay (en milisegundos). Volvemos a utilizar digitalWrite para establecer 0V, en este caso la constante LOW. Para volver a esperar un segundo volvemos a utilizar delay. Con esto terminaría la función loop, que se volvería a ejecutar.
Una variable es un espacio de memoria en el que almacenamos un valor. Las variables contribuyen a la legibilidad del código. Por lo tanto, deben elegirse nombres significativos. En el caso de que cambiemos los pines de conexión, nos servirá para realizar los cambios fácilmente.
Para cargar el programa desde el IDE de Arduino:
Esta es la simulación con DIODE:
Recuerda:
* Utilizar nombres de variables significativas.
* Terminar cada una de las isntrucciones en punto y coma (;)
* Abrir y cerrar los bloques con una llave ( { } ).
* Utilizar la tabulación para facilitar la lectura del programa.
Propuestas de actividad:
* Cambia los tiempos de parpadeo.
* Que parpadee al ritmo del corazón.
* ¿A qué velocidad deja de verse el parpadeo del LED?
* ¿Cómo podemos hacer que sólo parpadee una vez?
* Crear variables para el tiempo de parpadeo.
* Decrementar el tiempo de parpadeo en cada iteración.
2: Semáforo. Secuencias y repeticiones
La finalidad de nuestro sistema es realizar una secuencia de luces que simule un semáforo de coches.
Salidas digitales:
- Disponemos de los pines digitales (entradas y salidas) que van del 0 al 13. Las entradas analógicas (6) son configurables como digitales si fuera necesario.
Configuración de Entrada o Salida:
- Los pines deben ser configurados en el setup mediante la instrucción pinMode, indicando el número del pin al que vamos a conectar nuestro componente y el valor. El valor puede tomar la constante OUTPUT o INPUT. Por defecto están configurados como entradas.
DigitalWrite: activando/desactivando la salida:
- Para establecer un valor de 0V ó 5V utilizamos la instrucción digitalWrite, indicando una vez más el pin y el valor, que puede tomar las constantes LOW y HIGH.
Esquema:
Este es el código:
Propuestas de actividad:
* Simplificar el código eliminando instrucciones innecesarias.
* Introducir un parpadeo en el LED azul.
* Usa la instrucción for para hacer parpadear el LED azul.
* Acelera el parpadeo del LED.
Deja un comentario