2. Luces decorativas

Las luces se utilizan como decoraciones para muchas fiestas y festivales en todo el mundo. A veces, estas luces se sincronizan con la música o se programan para parpadear en ciertos patrones para crear animaciones e impresionantes efectos visuales. Aunque estos efectos pueden parecer complicados, se basan en los mismos principios que has estado aprendiendo.

En este reto, diseñarás, construirás y programarás tus propios efectos de luces. Este es un proyecto abierto, lo que significa que depende de ti decidir cómo funciona tu circuito de luces. Deberás utilizar los conceptos que aprendiste en las lecciones anteriores para completar el proyecto.

HISTORIA DEL LED

La tecnología de diodos emisores de luz (LED - Light-emitting diode) existió durante años antes de que fuera particularmente útil. Los científicos habían creado diodos capaces de emitir luz verde y luz roja. Estaba claro que la tecnología estaba un paso por adelante en algunos aspectos. Después de todo, los diodos podrían producir luz a baja temperatura con menos consumo de energía que las bombillas incandescentes. Por otro lado, ¿quién quiere iluminar su hogar con bombillas rojas y verdes? Excepto durante la temporada de fiestas, por supuesto.

Los científicos sabían que necesitaban un color para revolucionar el uso de esta tecnología: el azul. La razón es que la luz azul podría usarse junto con los otros dos colores para producir mezclas de colores. Al mezclar la luz de los LEDs rojo, verde y azul, se puede crear cualquier color de luz. Incluso la luz blanca utilizada en los espacios habitables de las personas se puede hacer mezclando los tres colores.

Entonces, ¿qué fue lo que los retraso? Se necesitaba un químico llamado nitruro de galio (GaN) para crear la luz azul. Y fue difícil de fabricar. Realmente difícil.

En 1993, un investigador llamado Shuji Nakamura encontró una técnica que funcionó. Al hacerlo, mostró un tremendo ingenio y determinación; trabajando con poco dinero y equipo modesto, Nakamura logró hacer lo que los equipos de investigadores que trabajaban con grandes presupuestos no habían podido hacer. El LED azul nació.

Inmediatamente se reconoció el logro de Nakamura. En 2014, él y otros dos, Isamu Akasaki y Hiroshi Amano, que también habían desempeñado un papel importante, recibieron el Premio Nobel de Física por esta invención. Para entonces, las casas y las pantallas de ordenador de todo el mundo estaban iluminados con esta tecnología.

Fuente: Arduino.cc

Una pantalla de móvil vista con un microscopio

Los pines analógicos

En nuestra placa Arduino disponemos de 6 pines que permiten leer valores analógicos. Los valores analógicos son aquellos que nos da la vida real. Un ejemplo es la temperatura. La temperatura es un número continuo que no tiene estados ni pausas, puedes tener 30.1ºC o -4.6ºC.

Los digitales son los contrarios, los que solamente tienen dos estados como un sí o un no. Son los pines del 0 a 13. El ejemplo típico es un LED que está encendido o apagado o un pulsador que está presionado o sin pulsar. Son los que hemos venido usando en los cuatro primeros retos. 

Con estos pines analógicos puedes medir los valores de la naturaleza. Pero claro, tu no metes un sensor de temperatura y Arduino te dice: Tienes 10.78ºC en tu habitación. No, Arduino te da un número de 0 a 1023… ¿Por qué esta locura?

Porque realmente lo que contienen esos pines es lo que se llama un ADC. ¿Un qué? Un Analog-Digital Converter. Eso son unos chips que convierten los valores analógicos en valores digitales que son con los que trabajan las placas electrónicas.

Una de las cosas más importantes de los ADC es lo que llaman la resolución. En el caso de Arduino son 10 bits. Esto significa que hay 10 bits con los que toda la información se tiene que representar. 10 bits son 210, que son 1024 (Por eso lo de 0 a 1023). Con estas 1024 posiciones hay que representar el rango de valores que podemos medir con el sensor. 

En realidad lo que detectamos es el voltaje que hay en el pin analógico, es decir, que dividimos los 5 Voltios (el máximo que puede entrar en Arduino sin quemarse) en 1024 partes de 0.0048 Voltios. Este es el mínimo cambio que se puede medir. Si la magnitud real de un  sensor (por ejemplo de temperatura)  cambiase tan poco que el cambio fuese de 0.003 Voltios, Arduino no se enteraría del cambio.

Este es el uso más común de los pines analógicos, el de medir magnitudes continuas como cantidad de luz, ruido, nivel de agua, caudal de una tubería, etc

Los pines analógicos A0...A5 son siempre de entrada

Adaptado de la fuente: Rufián en la red

Mapear valores analógicos

En la mayor parte de las ocasiones, queremos traducir las 1024 posiciones posible que se pueden leer por el pin analógico en otro rango, por ejemplo un porcentaje o un valor del 1 al 10. 

Con el bloque mapear estamos convirtiendo proporcionalmente el valor obtenido por el potenciómetro a un valor entre 0 y 10

VARIABLES EN ARDUINO

Una variable es un valor que guardamos y que podremos recuperar cuando lo necesitemos. Digamos que es como una caja donde guardamos un dato, como por ejemplo un número de puntos.

Este valor que guardamos en nuestra caja, lo podremos ver y reutilizar más adelante. Si no guardamos ese dato en una variable no podremos reutilizarlo, ya que el programa no lo recordará. Además, como veremos más adelante, en cualquier momento podremos cambiar el valor guardado en la variable.

DECLARAR UNA VARIABLE

Al declarar una variable en nuestro programa lo que hacemos es crear esa caja y guardar por primera vez un dato en ella. Para identificar en todo momento nuestra variable (o nuestra caja) debemos ponerle un nombre. 

Las variables en Arduino pueden ser enteros (INT), texto (string), números decimales (float) o verdadero/falso (lógica). En Bitbloq se definen automáticamente según el valor inicial de la variable.

En Bitbloq declaramos las variables en la primera sección del programa. 

COMUNICÁNDONOS CON LA PLACA: EL PUERTO SERIE

Cualquier dispositivo programable necesita comunicarse en algún momento con otros dispositivos de su entorno para proporcionar o para recibir información.

El puerto serie USB es el medio que tiene tu placa controladora para comunicarse con otro aparato como el ordenador o tu móvil. Es muy útil para comprobar de un vistazo el valor de un sensor o una variable, ver el estado de tu programa y, en definitiva, corregir y entender mejor los posibles errores que éste tenga.

A. PROGRAMANDO LUCES

En muchos lugares las luces están controladas por un regulador que permite variar la cadencia o tasa de parpadeo. En esta lección, investigarás las señales analógicas y cómo se pueden usar para controlar un circuito. Crearás un circuito LED que modificará la frecuencia de parpadeo de los LEDs cuando gires un dispositivo llamado potenciómetro.

Montaje del circuito

Guía de programación

ACTIVIDADES

A1

Carga el programa a la placa Arduino y escribe qué ha pasado. ¿Era lo que pensabas que iba a ocurrir? 

Si no coincide con lo que pensabas, indica qué ha cambiado y por qué crees que ha sido diferente.

Abre el monitor serie y observa los datos que aparecen. ¿Qué es?

A2

Ahora, en lugar de que parpadee solo un led, haz que parpadeen todos los leds con la misma tasa de parpadeo seleccionada por el potenciómetro. 

¿Cómo modificarías el tiempo máximo de encendido actual? ¿Podría ser de 3 segundos?

Carga el programa en la placa y comprueba su funcionamiento. 

Añade un captura de pantalla de la pestaña software de Bitbloq con tu programa en tu cuaderno.

A3

Ahora vamos a ir encendiendo y apagando de forma secuencial los leds. Con el potenciómetro seleccionaremos el tiempo de encendido de cada led. Tienes que lograr algo similar al vídeo de la derecha.

Carga el programa en la placa y comprueba su funcionamiento. 

Añade una captura de pantalla de la pestaña software de Bitbloq con tu programa en tu cuaderno.

A4

Para terminar, vamos a elaborar hacer las luces del coche fantástico con tiempo controlado por potenciómetro. Puedes basarte en el vídeo de la derecha.

Carga el programa en la placa y comprueba su funcionamiento. 

Añade una captura de pantalla de la pestaña software de Bitbloq con tu programa en tu cuaderno.

Para terminar el reto, graba un vídeo 🎥 del funcionamiento de la última actividad del reto que hayas conseguido realizar.  Se recomienda pasarlo a GIF antes de insertarlo en el cuaderno.

B. LOS LEDS RGB

Los leds RGB se basan en este modelo de color fundamentado en la síntesis aditiva, con el que es posible representar un color mediante la mezcla por adición de los tres colores de luz primarios (rojo, verde y azul).

Recordad que los colores secundarios (según el modelo aditivo RGB) son: 

Modelo aditivo de colores RGB (rojo, verde, azul) Wikipedia

El modelo de color RGB no define por sí mismo lo que significa exactamente el color rojo, verde o azul, por lo que los mismos valores RGB pueden mostrar colores notablemente diferentes en distintos dispositivos que usen este modelo de color.

Ahora que ya hemos entendido que el color resultante es la suma de los tres primarios, comentaremos varios aspectos respecto a los valores numéricos que asignaremos en nuestro código a cada uno de los colores primarios:

La intensidad de cada señal (o luz de color) va desde 0 (no interviene en la mezcla) hasta 255. De este modo: 

Fuente: Educar para el cambio

En realidad un LED RGB no es más que 3 leds de colores integrados  en un encapsulado.  Puede ser de dos tipos, en función de la conexión de los leds internos: ánodo común o cátodo común.

Patillaje led RGB cátodo común

Módulo con resistencias integradas

Montaje del circuito

Guía de programación

En la pestaña hardware:

En la pestaña software introduce los bloques que se indican en la imagen del programa a la derecha.

Carga el programa en la placa y prueba su funcionamiento.

ACTIVIDADES

B1

Escribe qué ha pasado. ¿Era lo que pensabas que iba a ocurrir?  Si no coincide con lo que pensabas, indica qué ha cambiado y por qué crees que ha sido diferente. 

Abre el monitor serie y observa los valores que se muestran. ¿Coindice con los valores que has programado? Visita esta web y comprueba que es igual que los valores RGB que has usado para programar tu led (Rojo a 218; Verde a 32 y Azul a 200). ¿Coincide el color de la web con el de tu LED? 

B2

Modifica ahora las variables Red, Green y Blue con el color rojo (255, 0, 0) y carga de nuevo el programa en la placa. ¿Coincide el color con el que programas? Abre el monitor serie y observa lo que se muestra. ¿Coincide con los valores que has programado?

Prueba con los otros dos colores primarios, verde o azul.

Carga el programa en la placa y comprueba su funcionamiento. 

Añade una captura de pantalla de la pestaña software de Bitbloq con tu programa en tu cuaderno.

B3

Ahora vamos hacerle algunos cambios al programa. 

En primer lugar, haremos que el led esté apagado al empezar el programa, inicializando las variables a 0.

También vamos a darle funcionalidad a los pulsadores y al potenciómetro para poder elegir el color que queramos. 

Como solo tenemos en clase un pulsador por persona, que usaremos para el color rojo, vamos a usar un final de carrera para el verde y un potenciómetro para el azul.

A la derecha puedes ver un ejemplo del condicional para que cada vez que pulsador el "botonRojo" se sume uno a la variable "rojo". 

Programa otro condicional para controlar el color verde.

Y programa un mapeado del valor de potenciómetro para que se guarde en la variable azul un valor entre 0 y 255.  Lo has hecho en el apartado A1 de este reto. 

Carga el programa en la placa y con la ayuda de los pulsadores y el monitor serie, trata de conseguir en el led alguno de los colores secundarios (amarillo, cian, magenta).

Comprueba su funcionamiento y añade una captura de pantalla de la pestaña software de Bitbloq a tu cuaderno.

Ahora las variables empezaran a cero, por lo que el LED estará apagado al empezar el programa.

Añadiremos 2 condicionales como este en el programa. Uno para rojo y otro para verde. 

Para terminar, visita esta web y selecciona dos colores diferentes a los programados anteriormente. Con la ayuda de los pulsadores y el monitor serie, selecciona varios colores diferentes entre sí. Recuerda que si presionas el botón de reset de la placa, volverás a tener el led apagado con (0,0,0).

Comprueba su funcionamiento y añade un captura de pantalla de la pestaña software de Bitbloq a tu cuaderno.

Para terminar el reto, graba un vídeo 🎥 del funcionamiento de la última actividad del reto que hayas conseguido realizar.  Se recomienda pasarlo a GIF antes de insertarlo en el cuaderno.

AMPLIACIÓN APARTADO A

¿ Y si el pin de cada led fuera una variable que va cambiando cada segundo en lugar de programar los pines por separado? 

Fíjate en el programa de la derecha y verás cómo aunque parece más complejo, al final es un programa más corto.

Y ya sabes que si es más corto ocupa menos memoria, carga más rápido y es mejor programa.

Si realizas la ampliación, incluye este apartado en tu memoria comentando el funcionamiento del programa.

⚠️⚠️ ATENCIÓN⚠️⚠️

Si vas a trabajar con el LED RGB que tiene el aspecto que verás a la derecha, tienes que saber que tiene lógica inversa o negativa. Eso quiere decir que en lugar de encenderlo lo apagamos, y viceversa. Deberás conectar el común que está marcado como negativo (-) a positivo. 

Debe ser un error de fabricación, es lo que tiene fabricar barato!!!

⚠️⚠️ATENCIÓN⚠️⚠️

Si usas el led RGB de lógica inversa tiens que hacer un pequeño cambio en tu programación pues el bloque de encendido que incorpora Bitbloq está pensado para usarlo con lógica positiva, tendrás que hacer un pequeño cambio de programación en el bloque que controla el encendido del LED RGB como puedes ver más abajo: