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

  1. Observa el esquema del circuito.

  2. Conecta cada LED a un pin de salida de arduino, por ejemplo el 13, 12 y 11, 10, 9 y 8.

  3. Conecta el cursor del potenciómetro al pin analógico A0. Los terminales fijos deben conectarse a +5V y a GND respectivamente.

  4. Conecta un cable de negativo de la placa de montaje al pin GND de Arduino.

Guía de programación

  1. En la pestaña hardware añade los 7 dispositivos que vas a emplear.

  2. Ponles un nombre que te permita identificar cada LED como puedes ver en la figura.

  3. Añade también el puerto serie.

  4. En la pestaña software introduce el programa que puedes ver en la imagen.

  5. Carga el programa en la placa y prueba su funcionamiento

Pestaña Hardware de Bitbloq

Pestaña Software. Bucle principal.

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 haz que parpadeen los 6 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 6 leds. Con el potenciómetro seleccionaremos el tiempo de encendido de cada led. Puedes basarte en el vídeo de la derecha.

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.

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 un 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:

  • rojo + verde = AMARILLO

  • rojo + azul = MAGENTA

  • verde + azul = CIAN

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:

  • El rojo se obtiene con la siguiente mezcla (255, 0, 0) = (R, G, B).

  • El verde con (0, 255, 0) = (R, G, B).

  • El azul (0, 0, 255) = (R, G, B).

  • El color negro o, lo que es lo mismo, la ausencia de color se obtiene con (0, 0, 0).

  • El color blanco, como ya te has podido imaginar, con (255, 255, 255).

  • El color amarillo (255, 255, 0); cian (0, 255, 255) y magenta (255, 0, 255).

Fuente: Educar para el cambio

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

Patillaje led RGB cátodo común

Montaje del circuito

  1. Observa el esquema del circuito.

  2. Añade el LED RGB. Fíjate en las conexiones de la imagen del patillaje del led RGB. El cátodo debe ir a GND y cada una las patas de los colores llevará una resistencia en serie. Conectaremos el rojo a la 11, el verde a la 10 y el azul a la 9.

  3. Conecta tres pulsadores a los pines 7, 6 y 5. Recuerda colocar una resistencia de 10K entre el el terminal del pulsador que está conectado al pin y GND.

  4. Conecta los cables positivo y negativo de la placa de montaje a Arduino.

Guía de programación

  1. En la pestaña hardware añade el LED RGB. Fijate que cada color quede conectado al pin mismo que has conectado en el montaje.

  2. Añade los tres botones, uno por color. Nombra los botones de forma que puedas identificarlos fácilmente, por ejemplo BotonRed, BotonGreen, BotonBlue.

  3. Añade también el puerto serie.

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

  5. Carga el programa en la placa y prueba su funcionamiento.

Pestaña Hardware de Bitbloq

Pestaña Software. Bucle principal.

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 e introduce los valores RGB que has usado para programar tu led. ¿Coincide el color 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 un 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 para poder elegir el color desde la placa. Lo haremos añadiendo al programa 3 condicionales como el de la derecha, uno por cada color.

A la derecha puedes ver un ejemplo del condicional para que cada vez que pulsador el "botonRed" se sume uno a la variable "rojo". Programa los otros dos condicionales para que funcionen los tres botones, cada uno con la variable de su color.

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

Comprueba su funcionamiento y añade un 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 3 condicionales como este en el programa. Uno para cada variable de color.

B4

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.