El Arduino y las matrices de leds

Por fin me llegó el pedido con las matrices de leds. Es lo único malo que tiene el comprar por internet en tiendas que no tienen presencia en España, el tiempo que se tarda en recibir el pedido (10 días aprox). Pero vamos al grano. Después de un tiempo trasteando con las matrices de leds y con el Arduino, ya puedo decir que me siento cómodo jugando con ellos.

Matriz de leds de 2 colores para el Arduino

Y como era de esperar, el camino no ha sido nada fácil:

  • Primera sorpresa: en lugar de 16 patas (8 para controlar las filas y otras 8 para las columnas) veo que las matrices tienen 24 patas!! 8 más de las esperadas. Echándole un vistazo al albarán descubro que he comprado matrices de leds de 2 colores, rojo y verde.
  • Después de descargar el datasheet, empiezo a entender cómo funcionan las matrices: 8 de los pines son para controlar las filas. Hasta aquí lo esperado. Los otros 16 pines son para controlar las columnas: 8 pines son para las columnas rojas y 8 pines para las columnas verdes. Entendido. Para simplificar las pruebas, me propongo jugar sólo con los leds en rojo, que era mi objetivo inicial.
  • Mirando los diodos del datasheet también entiendo que un led concreto se iluminará al poner la pata de la fila en alto (+5V) y la pata de la columna a tierra (GND). Sé que esto tiene un nombre: matriz anódica o matriz catódica, pero no sé cual le corresponde.
  • Otra cosa importante: el orden de las patas no se corresponde con el orden lógico de filas y columnas. Un ejemplo. El pin rojo de arriba a la izquierda (fila 1, columna 1) está controlado por la pata 22 (que controla la fila 1), y la pata 23 (que controla la columna 1 de leds rojos).
  • Ya sólo falta encontrar cuál es físicamente la pata 1 y cual la 24 (sé que parece de perogrullo, pero no es tan evidente). Basta darle la vuelta a la matriz y mirarla desde abajo. Se muestra en pequeño un 1 al lado de una pata y un 24 al lado de otra. El resto de patas van en orden correlativo.
  • Y por último, el breadboard. Las matrices son tan anchas que no dejan espacio para conectar los pines del Arduino. Así que ya sabéis, sed generosos y comprad un breadboard grande.

Arduino - matriz de 2 colores

El resto es pan comido. Para hacer las primeras pruebas basta con utilizar 16 puertos de salida del Arduino. 8 los conectamos a las columnas y otros 8 a las filas, y a jugar con el código. Como en los casos anteriores, el código del Arduino para iluminar algunos leds está disponible para quien quiera descargarlo (de momento sin PHP) y en las primeras líneas se explica qué pines del Arduino conectar a qué patas de la matriz de leds.

Pensando en que el objetivo final es poder tener una capa de comunicación y mostrar mensajes de texto utilizando varias matrices de leds, este circuito presenta 2 problemas tal y como está planteado:

  • No es escalable. Apenas nos quedan unos pocos puertos del Arduino disponibles y necesitamos unas cuantas matrices para poder escribir algún mensaje.
  • Pensando en mostrar letras del alfabeto, surge un problema: al iluminar varias filas y columnas de forma simultánea, se encienden más leds de los esperados. Esto es algo complejo de describir, pero que visualmente se ve rápido al hacer un par de pruebas. La solución pasa por multiplexar, pero esta es otra historia.