• Autor de la entrada:
  • Categoría de la entrada:Arduino

Mires donde mires, ahí hay una matriz LED, desde un simple monitor hasta la pantalla más grande que puedas encontrar en un concierto.

led-screen

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.

LED y resistencia
LED y resistencia

En este supuesto podemos calcular el número de puertos digitales con la siguiente fórmula:

Número puertos = ((Filas + Columnas) x Número de colores en el LED)

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:

  1. Si solo quieres encender/apagar el led, usa puertos digitales normales.
  2. 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.


Esquema Matriz 8x8

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:

  1. Apagar toda la matriz conectando las columnas a masa y filas a alimentación.
  2. Activar la fila en la que vamos a dibujar conectando el pin correspondiente a la fila a masa.
  3. 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.


Dibujo de la letra W en matriz 5x7

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.

Enrique Gómez

Ingeniero Electrónico Industrial y Automático, amante de la comunicación audiovisual y de la divulgación ingenieril y científica. Friki de Star Wars, cuenta más de lo que parece. Puedes saber más sobre mi y sobre mis trabajos en www.enriquegomez.me