Este curso utilizaremos unos LEDs muy chulos, grandotes y difusos en nuestros talleres y actividades extraescolares. Buscábamos alternativas a los módulos Octopus piranha de Elecfreaks. La manufactura es excelente, pero emiten una luz demasiado potente, que unida al efecto casi hipnótico de jugar con LEDs, requería de algún tipo de recubrimiento con plástico translúcido o simplemente ponerlos boca abajo para evitar que molestasen a la vista.
Como os decía, para este año hemos elegido unos módulos con encapsulado translúcido. Se denominan LEDs difusos y esperamos que sean todo un éxito. Además, son multicolor, pudiendo elegir entre una gama de colores casi infinita. Si os preguntáis cómo se puede cambiar el color de un LED, hago un pequeño paréntesis y os lo explico de una manera sencilla. Si tomaseis una lupa con buenos aumentos y echaseis un vistazo a alguna pantalla que tengáis por ahí, veríais algo similar a esto:
Habréis advertido que existe un patrón repetido a lo largo y ancho de la superficie de la pantalla. Son los 3 colores básicos del espectro de emisión de luz: el rojo, el verde y el azul (red, green, blue o RGB). Cada trio se conoce como pixel (que viene de la contracción picture-element) y cada pequeño LED individual, sub-pixel. Variando la cantidad de luz que emiten estos sub-pixeles se puede obtener un espectro de millones de tonos de todos los colores y crear imágenes que resultan tan reales como la vida misma.
Conclusión, el color de un LED queda determinado por los componentes utilizados en su fabricación. El recurso para obtener colores distintos consiste en meter 3 LEDs pequeñitos en el mismo encapsulado, de modo que funcionen como los pixels de las pantallas que acabamos de ver. La fotografía de la derecha permite identificar cada uno de los diminutos LEDs que apretujados forman un LED RGB.
Cerramos el paréntesis y seguimos con nuestro nuevo módulo RGB. A continuación una foto suya:
Debido al acabado translúcido del plástico, no se pueden identificar los LEDs individuales, pero a cambio no es molesto para la vista y además la mezcla de tonalidades conseguida es más homogénea. Junto con el propio LED distinguimos los conectores y las resistencias. Los conectores son 4, ya que cada sub-LED se controla por separado, a los que tenemos que añadir otro que servirá para alimentarlos eléctricamente. Sobre esa alimentación reside el grueso del artículo de hoy. En cuanto a las resistencias (3, una para cada sub-LED), limitan la tensión que les llega y evitan que los 5 voltios que proporciona Arduino puedan fundirlos. Parecen hormiguitas sobre el módulo y veréis que cada una está en un caminito que lleva desde su conector hasta el interior del encapsulado. Pero vayamos al grano y conectemos el módulo.
Como buen diodo, la alimentación de un LED requiere una orientación o polarización adecuada, ya que la conexión al contrario no permitiría la circulación de la corriente eléctrica. Con los voltajes bajos con los que trabajamos, si no tenemos ninguna indicación, podemos conectarlo de un modo y si no funciona a la primera lo probamos a la inversa y asunto resuelto. Lo entretenido viene cuando no es uno, sino tres, los LEDs que queremos alimentar. Como el cuarto pin es común para los 3 LEDs, se generan 2 posibles combinaciones: Que las patillas individuales de cada sub-LED sean el ánodo (o positivo) y el pin común sea el negativo (o cátodo), o bien que las patillas individuales sean el cátodo y el pin común el ánodo.
Caso 1: Cátodo común. Para alimentar este módulo debemos conectar el cátodo a cualquier pin negativo (también llamado masa o GND) de nuestra placa y los pines de los 3 sub-pixeles a otras tantas salidas digitales, cerrando así los circuitos. Eléctricamente, y dado que por convención la corriente circula del ánodo al cátodo, cuando activamos una salida digital (tensión a 5 voltios) ésta se convierte en ánodo y el sub-pixel correspondiente se enciende. Cuando desactivamos la salida, retorna a 0 voltios y al no existir diferencia de tensión en el circuito, el LED se apaga. Pero esto no es todo, si además queremos graduar la intensidad de la luz emitida, podemos recurrir a las salidas digitales PWM. Aunque requiere un artículo para ella sola, comentaremos brevemente que esta técnica divide el rango de tensión entre los 0 y los 5 voltios en 256 pequeñísimas fracciones, posibilitando un control muy preciso de la potencia con la que lucirán nuestros LEDs. Este tipo de salidas suelen distinguirse por el símbolo ~ y en nuestra querida Arduino Uno se corresponden con los pines 3, 5, 6, 9, 10 y 11. De este modo, seleccionando valores cercanos al 255 (cerca de los 5 voltios), con más fuerza lucirá el LED. A la inversa, eligiendo valores cercanos al 0, la tensión estará cerca de los 0 voltios y la luz emitida será más tenue. Podemos concluir con que en los LEDs RGB con cátodo común, los valores que utilizamos sirven para apagar/encender/graduar la luminosidad del LED.
Caso 2: Ánodo común. En este tipo de módulos el circuito funciona a la inversa. Como el pin común siempre estará a 5 voltios, el circuito funcionará cuando del otro lado, los sub-LEDs estén a menor tensión. Los conectaremos a sus respectivas salidas digitales, teniendo en cuenta que ahora debemos pensar a la inversa. Cuando activemos una salida digital, la tensión quedará en 5 voltios, equilibrando la tensión del ánodo, por lo que no circulará corriente y el LED estará apagado. Para encenderlo, tendremos que desactivar la salida digital correspondiente, dejándola en 0 voltios y creando así una diferencia de tensión que hará circular la corriente y encenderá el LED. En el caso de utilizar salidas PWM, el funcionamiento también es al contrario: seleccionando valores cercanos al 255 (cerca de los 5 voltios), la diferencia de tensión con el ánodo será menor y el LED lucirá tenue. Eligiendo valores cercanos al 0, la tensión aumentará, situándose cerca de los 0 voltios y por tanto luciendo con más intensidad. En este caso, concluiremos que en los LEDs RGB con ánodo común, los valores que utilizamos sirven para apagar/encender/graduar la oscuridad del LED. Ya se que suena un poco raro, pero es una manera de interpretarlo.
En el siguiente esquema os mostramos un LED RGB de cada tipo y su conexionado. A la izquierda, el módulo del que os he hablado, con ánodo común. A la derecha, otro módulo que tenía por casa, éste con cátodo común:
Programación: Utilizaremos Scratch 2.0 con el puente s2aio para controlar Arduino. El programa utilizará las teclas 1, 2 y 3 para encender y apagar los sub-LEDs del LED RGB de ánodo común y hará lo propio con los números 8, 9 y 0 con el del cátodo común. Como ejemplo, os dejo la captura de la inicialización de las variables que definen el estado de los sub-LEDs (más el del carrusel que veremos después) y un par de módulos que controlan el estado del sub-LED rojo de ánodo común (tecla 1) y del sub-LED azul de cátodo común (tecla 8):
Estudiemos con detenimiento el caso de la tecla 1, que controla el sub-LED rojo del LED RGB de ánodo común. Al comenzar cada módulo, se activa la salida digital 11. Seguidamente utilizamos un truco que consiste en multiplicar por -1 el valor de la variable de estado y evaluarla dentro del condicional. Recordando que en el caso del ánodo común controlamos la oscuridad, si el valor de la variable es 1, la salida digital queda a 0 (0 voltios) lo que hará que el sub-LED se encienda. Al pulsar de nuevo la tecla 1 el valor de la variable pasa a -1, el condicional ejecuta la parte si no y pone la salida digital a 1 (5 voltios) de modo que no circula corriente y el sub-LED se apaga (queda a tope de oscuridad).
Os dejo a vosotros el caso de la tecla 8, que controla el sub-LED azul a través de la salida digital 6. Como este es un caso de LED de cátodo común, la interpretación es más natural ya que controlamos la intensidad de la luz emitida.
Para aprovechar y mostrar las capacidades de las salidas PWM, al pulsar la tecla espacio comenzará un carrusel de colores con valores al azar para todos los sub-LEDs. Los módulos siguientes definen su comportamiento:
Veréis que al pulsar la barra espaciadora recurrimos al mismo truco de multiplicar por -1 la variable para cambiarla de estado. Solo si la variable vale 1, se lanza el proceso Carrusel. En él se activan las salidas digitales como PWM para poder graduar su intensidad. En el bucle posterior, asignamos un valor aleatorio a todos los sub-LEDs cada segundo, recreando un conjunto casi ilimitado de colores y tonos. El bucle termina cuando la variable carrusel cambie de valor, es decir, cuando pulsemos de nuevo la barra espaciadora. Tras el bucle se asignan los valores necesarios para que los sub-LEDs se apaguen. Nótese la diferencia requerida entre los sub-LEDs de ánodo común y los de cátodo común para esta operación de apagado general.
Y ya basta de charla. Como prueba de concepto, os dejo el enlace al archivo de Scratch por si queréis probar (recordad que necesitáis tener instalado s2aio para comunicar con Arduino) y el video que ilustrará toda esta exposición:
Pingback: Apuntes Arduino. Tercera entrega. | expeduca