Mires donde mires, ahí hay una matriz LED, desde un simple monitor hasta la pantalla más grande que puedas encontrar en un concierto.
Las matrices LED están formadas por cientos de LEDs colocados a modo de cuadrícula y ordenados por filas y columnas. Necesitamos que los LEDs estén ordenados ya que de esta manera podemos realizar el control de todos los ellos de una forma eficiente y sencilla.
Para controlar una matriz LED necesitaremos algún componente de control como un microcontrolador y sus puertos digitales. ¿Pero cuantos? La respuesta depende de varios factores y aveces no es fácil de responder. Vamos a considerar que usamos LEDs normales, es decir LEDs que tienen un ánodo y un cátodo.
En este supuesto podemos calcular el número de puertos digitales con la siguiente fórmula:
En el caso de usar LEDs de un solo color —-> Número de colores en el LED es 1.
En el caso de usar leds de dos colores —-> Número de colores en el LED es 2.
En el caso de usar led RGB —-> Número de colores en el LED es 3.
Tipo de pin digital
Llegados a este punto puede surgir la duda: ¿qué tipo de pin digital necesito? La respuesta es sencilla, depende del tipo de led y lo que quieras hacer con él:
- Si solo quieres encender/apagar el led, usa puertos digitales normales.
- Si quieres variar la intensidad con la que se enciende cada LED, usa puertos PWM para las columnas y normales para las filas.
Arquitectura de la matriz LED
Para montar una matriz tenemos que colocar los led formando filas y columnas, no importa si es un cuadrado, un rectángulo, un círculo, etc. lo único que importa es que estén formando filas y columnas.
Una vez colocados los LEDs de la forma necesaria, procederemos a unir entre sí los ánodos de todos los LEDs de la misma columna y soldamos a ellos un cable. De esta forma tendremos un cable por cada columna
Hacemos lo mismo con las filas, unimos entre si los cátodos de todos los LEDs de las misma fila, de forma que tengamos un cable por cada fila.
Conexión al microcontrolador
Conectamos nuestra matriz a los pines del microcontrolador. En el ejemplo 5×5 del vídeo las columnas están conectadas del pin 2 al 6 y las filas del 7 al 11.
Como puedes prever, está técnica usa gran cantidad de pines, por tanto solo es útil con matrices pequeñas.
Dibujar en la matriz LED
El procedimiento para dibujar con la matriz es:
- Apagar toda la matriz conectando las columnas a masa y filas a alimentación.
- Activar la fila en la que vamos a dibujar conectando el pin correspondiente a la fila a masa.
- Encender los pines de las columnas dónde están los LED que queremos encender de esa fila.
Repetimos este proceso para cada una de las filas, una por una.
El ojo humano no es capaz de ver parpadeos inferiores a 2 ms. Es por esto que si encendemos y apagamos las filas con suficiente velocidad no seremos capaces de detectar que las filas están parpadeando.
El código:
void setup() { for(int i = 2; i <= 11; i++){ pinMode(i,OUTPUT); } } void loop() { apagar_matriz(); //apagamos la matriz digitalWrite(7, LOW); //activamos la fila 1 (salida 7) led(1,1,1,1,1); //Encendemos los 5 leds delay(2); apagar_matriz(); //apagamos la matriz digitalWrite(8, LOW); //activamos la fila 2 (salida 8) led(1,0,0,0,0); //Encendemos el primer led delay(2); apagar_matriz(); //apagamos la matriz digitalWrite(9, LOW); //activamos la fila 3 (salida 9) led(1,1,1,0,0); //Encendemos los 3 primeros leds delay(2); apagar_matriz(); //apagamos la matriz digitalWrite(10, LOW); //activamos la fila 4 (salida 10) led(1,0,0,0,0); //Encendemos el primer led delay(2); apagar_matriz(); //apagamos la matriz digitalWrite(11, LOW); //activamos la fila 5 (salida 11) led(1,1,1,1,1); //Encendemos los 5 leds delay(2); } void apagar_matriz(){ for(int i = 2; i <= 6; i++){ digitalWrite(i, LOW); } for(int i = 7; i <= 11; i++){ digitalWrite(i, HIGH); } } void led(int uno, int dos, int tres, int cuatro, int cinco){ digitalWrite(2,uno); digitalWrite(3,dos); digitalWrite(4,tres); digitalWrite(5,cuatro); digitalWrite(6,cinco); }
Bueno electromaniacos, a continuación queda el vídeo en el que explico la matriz LED y un ejemplo con una matriz 5×5. Probablemente en un próximo tutorial hablemos sobre como usando electrónica digital podemos reducir aún más el número de pines digitales que necesitamos para controlar una matriz LED.