Mensajes en matrices de leds con el Arduino

El primer objetivo que me marqué para trastear con el Arduino está cumplido: la capa de comunicaciones está funcionando. Esto significa que de momento esta será la última entrada en el blog relacionada con el Arduino. ¿En qué consiste el proyecto? En conectar 2 matrices de 8×8 leds (escalabale con más matrices), una puesta a continuación de la otra, y mostrar cualquier texto de hasta 160 caracteres mediante scroll horizontal.

Arduino - ejemplo 4

El proyecto y el código están basados en la documentación que se comparte en este hilo de los foros oficiales de Arduino. Básicamente se utiliza un 75HC595 para controlar todas las filas y una serie de 75HC595 encadenados para las columnas, a razón de un controlador por cada matriz de leds. En este caso tengo sólo 2 matrices de leds porque el breadboard es demasiado pequeño por lo que encadenaremos sólo 2 74HC595. De esta forma se controlan todas las matrices con sólo 6 pines del Arduino: 3 para el 75HC595 que controla las filas y otros 3 para el primer 75HC595 que controla las columnas ya que el resto se van encadenando a nivel físico a este primer controlador.

Respecto al código del Arduino, comentar que tiene bastantes “tweaks” respecto al código original de los foros del sitio web oficial. Algunos de ellos son “forzosos” por utilizar el registro 74HC595 en lugar del TPIC6C595 para controlar las columnas, y otros son de optimización. Por ejemplo, he sustituido el alfabeto por uno de “anchos dinámicos” en el que casi todas las letras ocupan 3 columnas de ancho. Para aquellos que se aventuren a intentar entender cómo está estructura el código, lo más importante es que para que se muestre bien el texto en los leds hay que multiplexar las filas. Esto quiere decir que el algoritmo sería algo parecido a esto: iluminar los leds de una fila que se correspondan con el texto a mostrar en un momento dado, apagarla, iluminar la siguiente, apagarla, y así sucesivamente y lo suficientemente rápido para que el ojo humano no lo note.

Y sobre el código PHP, algo bastante sencillo: sigo utilizando las funciones de ejemplos anteriores para pasarle una cadena de texto por el puerto serie, y a partir de aquí el trabajo lo realiza el Arduino. Los códigos están disponibles para quien los quiera descargar, y queda así de chulo (de nuevo grabado con una BlackBerry):

Es así de llamativo con 2 leds, y lo mejor es que es fácilmente escalable a unas cuantas más matrices de leds de 8×8. El límite lo pone el propio Arduino en función de la potencia que es capaz de dar a nivel de alimentacion (voltaje). Eso sí, comprad un breadboard lo más grande posible y con cables de diferentes longitudes y colores, porque a nivel de Hardware el caos se alcanza al poquito de empezar a conectar componentes.

Y sobre siguientes pasos, tengo varios en la cabeza: a nivel de hardware, por ejemplo, lo suyo sería utilizar el componente wifi para Arduino, y así liberarme del cable enganchado al PC por el puerto USB consiguiendo movilidad. Y a nivel de Software, engancharlo al API de twitter para que vaya mostrando los mensajes relacionados con un usuario o con un hashtag determinado de forma automática. Todo a su tiempo.