LED Matrix

Not sure why, but I’ve always thought making a huge LED audio spectrum analyzer would be cool. With that goal in mind, I picked up some dot matrix LED blocks and started breadboarding. This project started long before the days of Neopixels, so the most advanced tech on my PCB is slew of LM317s for current limiting and a handful of high-current shift registers for multiplexing.

The breadboard version in action, extra points if you can name what song that came from.

As you can see, there was a pretty bad ghosting effect as the letters scroll by. It took me a while to figure out that the display needed to be left completely blank for a certain period between scrolling increments or your eyes get confused and just see a blurry mess. This version used an Arduino to render the scrolling text into bits and clock it out to the shift registers.

PCB

With the breadboard version working, I designed a PCB that would fit three 7×5 blocks in way that I could connect multiple boards together with simple rectangular headers. It doesn’t exist anymore, but Sparkfun used to have a low-volume PCB service called BatchPCB. I ended up getting four boards for about $75, which I populated by hand and chained together to make a continuous 7×60 matrix.

Connecting to MediaMonkey and the interwebs

I swapped out the Ardiuno for a SparkCore (now called Particle) so that I could program the device through the cloud and use its web hooks to scrape data from the web. At one point, I had a Python script that queried weather info from Weather Underground as well as a script that ran inside MediaMonkey(this was pre-Spotify) to dump track info and lyrics to it.

Get The Code

You can find all of the source code for this project in this github repo.

Next Steps

I still have the hardware, but I can’t seem to find any videos of it in action. Maybe I’ll fire it up again someday, or maybe I should just go nuts and make something like this or this with Neopixels!

Related Post

Leave a Reply

Your email address will not be published. Required fields are marked *