Matriz de leds bicolor

Matriz bicolor 8x8

En el proyecto de hoy vamos a trabajar con una matriz de leds bicolor de 8×8, lo que nos da un total de 64 leds. Estos leds pueden ser de color rojo o verde, pero si combinamos ambos colores, tenemos como resultado que cada led puede ser también de color amarillo.

Normalmente necesitaríamos un multiplexor a parte para poder manejar dicha matriz de una manera más o menos cómoda, pero el modelo que vamos a tratar aquí ya trae la solución incorporada. Se trata de un componente fabricado por la empresa Adafruit, los cuales, nos proporcionan junto con la matriz un backpack con un chip controlador que nos facilitará el trabajo. Dicho circuito reduce el número de conexiones necesarias a cuatro, por lo que será muy fácil cablear nuestro proyecto.

Soldando la matriz

Cuando adquirimos este modelo de matriz, nos llegará separado en tres componentes: la matriz de leds, el circuito controlador y cuatro pines de conexión.

Soldando la matriz - Paso 1

Para unir dichos componentes, debemos seguir los pasos siguientes:

1 – Colocamos la matriz sobre la placa. Dicha placa debe de tener la cara de serigrafía hacia arriba. Para hacerlo, tomaremos como referencia un punto blanco redondo, el cual, debe de quedarnos en la parte inferior izquierda. La matriz en cambio, debe ser colocada de manera que veamos el lado serigrafiado, tal y como se muestra en la siguiente imagen. Si no colocamos la matriz y la placa en la posición correcta, no funcionará.

Soldando la matriz - Paso 2

2 – A continuación, le damos la vuelta a la placa y soldamos los 24 pines.

Soldando la matriz - Paso 3

3 – Los recortamos un poco para que no queden muy largos.

Soldando la matriz - Paso 4

4 – Seguidamente soldaremos el conector de cuatro pines a la placa. Para ello insertaremos dicho conector en una protoboard por el lado en el que los pines son más largos.

Soldando la matriz - Paso 5

5 – Colocamos la placa sobre los pines y los soldamos.

Soldando la matriz - Paso 6

Librerías

Bien. Ahora que tenemos soldada la matriz a la placa, ya podemos empezar a jugar con ella.

Para facilitarnos la tarea de programación, nuestros amigos de Adafruit han creado una serie de librerías que nos serán de gran ayuda. Para poder utilizarlas debemos seguir los pasos siguientes:

1 – Descargamos desde Github la librería correspondiente al backpack y la descomprimimos en una carpeta llamada Adafruit_LEDBackpack.

2 – Comprobamos que dicha carpeta contiene los archivos Adafruit_LEDBackpack.cpp y Adafruit_LEDBackpack.h y la copiamos en la ruta sketchbook_de_nuestro_Arduino/libraries/ del IDE de Arduino. Si es la primera vez que añadimos una librería, tendremos que crear la carpeta libraries.

3 – Descargamos también la librería Adafruit GFX, la cual nos proporcionará una serie de funciones gráficas. Tras descargarla, la añadimos del mismo modo que la anterior.

4 – Si teníamos encendido el IDE de Arduino, debemos reiniciarlo para que detecte las nuevas librerías.

Testeando la matriz

Ya hemos soldado la matriz al backpack y descargado las librerías necesarias, por lo que es hora de hacer un pequeño test y confirmar que lo hemos hecho todo perfecto.

Lo primero que tenemos que hacer es conectar la matriz a nuestro Arduino. Para ello haremos lo siguiente:

1 – Conectamos la alimentación y la tierra a la protoboard.

2 – Unimos los pines del backpack en este orden:

– Pin CLK del backpack al reloj I2C. En Arduino UNO se corresponde al pin analógico A5.

– Pin DAT del backpack al pin de datos I2C. En Arduino UNO se corresponde al pin analógico A4.

– Pin GND a la tierra de la protoboard.

– Pin VCC a la alimentación de la protoboard. Lo mejor es utilizar 5V, pero con 3V también le podemos dar un buen uso.

Terminado de montar el circuito, deberíamos de tener algo parecido a lo mostrado en la siguiente figura.

Matriz bicolor - Diseño de protoboard

El esquema eléctrico correspondiente sería:

Esquema de conexiones

Ahora que ya tenemos montado el circuito, es hora de comprobar que funciona. Para hacerlo vamos a utilizar el programa de prueba que viene con la librería.

1 – Encendemos el IDE de Arduino.

2 – Nos vamos a Archivo -> Ejemplos -> Adafruit_LEDBackpack -> bicolor8x8

Si hemos seguido los pasos correctamente, el programa debería ejecutarse sin problema alguno. Al examinar el código fuente, veremos algunas de las rutinas básicas que podemos utilizar. Una de las más importantes es la función writeDisplay(). Dicha función es la encargada de escribir en memoria el dibujo que hemos realizado para después mostrarlo por la matriz. El proceso sería el siguiente:

1 – Limpio la matriz con la función clear().

2 – Utilizo cualquiera de las funciones disponibles para dibujar lo que quiero, ya sea una línea, un circulo, un solo led o un bitmap.

3 – Llamo a la función writeDisplay() para cargar en memoria el dibujo y que pueda ser mostrado en la matriz de leds.

Como se puede apreciar en el programa de prueba, el proceso de dibujo siempre sigue los tres pasos anteriores. Esta matriz soporta todas las funciones de la librería GFX de Adafruit, por lo que si queremos saber más, solo tenemos que visitar la página oficial de la librería.

Existen dos funciones especiales para esta matriz y que no se muestran en el programa anterior.

setBrightness(brightness): establece el brillo de toda la matriz. El parámetro brightness es un valor comprendido entre 0 (nivel de brillo mínimo) y 15 (nivel de brillo máximo). Por defecto la matriz viene configurada con un nivel 15.

blinkRate(rate): sirve para hacer parpadear a toda la matriz. El parámetro rate es un valor comprendido entre 0 (no hay parpadeo) y 3 (máximo parpadeo).

Cuando probemos el funcionamiento de la matriz, hemos de tener en cuenta que la orientación de la misma es con el conector de cuatro pines a la izquierda y el logo a la derecha, tal y como se muestra en la siguiente imagen:

Posicion original de la matriz

Si queremos rotar la matriz, tendremos que invocar a la función matrix.setRotation(parámetro). En donde el parámetro indicará la posición de la misma.

Conectando múltiples matrices

Ahora ya tenemos controlado el funcionamiento de una matriz, pero, ¿cómo conectamos más de una? El kit de la cuestión reside en configurar la dirección de memoria de cada una de ellas. Para evitar colisiones de información entre varias matrices conectadas, se le asigna una dirección de memoria única a cada una. En la parte posterior del backpack encontraremos tres jumpers de soldadura, cada uno con una resistencia a su derecha, llamados A0, A1 y A2 respectivamente.

Jumpers de soldadura

Jumpers de soldadura

Como tenemos tres jumpers, tenemos 2³ combinaciones posibles. Si la dirección de memoria inicial es 0x70, quiere decir que tenemos disponibles las posiciones de memoria de la 0x70 a la 0x77. Por defecto, si no soldamos ninguno de los jumpers, la matriz tendrá la posición de memoria 0x70. Si soldamos A0 tendremos la dirección 0x71, A1 para 0x72, A0 + A1 para 0x73, etc etc. En función de cuantas matrices queramos combinar, tantos jumpers deberemos soldar.

Para entender mejor el concepto anterior, vamos a montar un circuito con dos matrices, una con la posición de memoria 0x70 y la otra con la 0x71, tal y como se muestra en la siguiente imagen.

Matriz bicolor de 8x8 combinada - Diseño de protoboard

El esquema eléctrico correspondiente sería:

Matriz bicolor de 8x8 combinada- Esquema de conexiones

Como podemos observar, para añadir una segunda matriz solo hay que conectarla en paralelo con la primera. Una vez hecho esto, debemos modificar el código fuente para que refleje los cambios realizados. Si antes teníamos el código siguiente:

Adafruit_BicolorMatrix matrix = Adafruit_BicolorMatrix();

void setup() {
  Serial.begin(9600);
  Serial.println("8x8 LED Matrix Test");
  
  matrix.begin(0x70);  // pass in the address
}

Ahora debemos modificarlo para que quede así:

Adafruit_BicolorMatrix matrix = Adafruit_BicolorMatrix();
Adafruit_BicolorMatrix matrix2 = Adafruit_BicolorMatrix();

void setup() {
  Serial.begin(9600);
  Serial.println("8x8 LED Matrix Test");
  
  matrix.begin(0x70);  // pass in the address
  matrix2.begin(0x71);  // pass in the address

}

Lo único que hemos hecho es añadir una segunda matriz y asignarle la dirección de memoria 0x71. Si queremos añadir más matrices, tan solo debemos seguir los pasos anteriores: unimos los jumpers de soldadura necesarios y modificamos el código fuente correspondiente.

Conclusión

En este artículo hemos visto como funciona una matriz de leds bicolor de la empresa Adafruit y como podemos combinar varias de ellas. Existen diferentes tipos de matrices de leds, pero el proceso para configurarlas y combinarlas entre ellas es básicamente el mismo que el explicado aquí. A mi me ha funcionado a las mil maravillas, tanto utilizando una como dos. Aunque si tenéis muy claro que vais a combinar dos matrices, tal vez os interese adquirir los nuevos modelos dobles, en donde ya vienen combinadas.

 

Espero que os haya gustado.

Un saludo y muchas gracias por leer este artículo.  ^_^

 

Referencias

– Artículo basado en el tutorial “Adafruit LED Backpacks. Control small LED matrices with ease” escrito por Lady Ada el 29 de julio de 2012 en Adafruit.com

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s