There are so many nice hacks in [Joekutz]’s retro LED display project that it’s hard to know where to start. There’s his DIY LED display controlled by an Arduino UNO. To have some text or picture for the display, he’s wired the output of a Bluetooth speaker directly to the Arduino, and sends it speaker tones that encode the text to draw. And as if that wasn’t enough, he’s hacked a quartz driver board from an analog clock to use the display as a clock as well.
Let’s start with the LED matrix display, perhaps the best excuse for trying your hand at shift registers. This display uses two such 8-bit shift registers daisy chained together feeding two 8-bit Darlington arrays. The display has ten rows of sixteen columns, and you guessed it, the columns are controlled by the sixteen shift registers. Two Arduino pins tell the shift registers which column to turn on. The rows are turned on and off using ten transistors controlled by ten more Arduino pins. Scanning at 80 frames per second he gets a nice, flickerless display.
To make both the LED matrix circuit board and the control board, [Joekutz] carved out isolation paths in copper clad boards using his homemade CNC mill. Be sure to check out the first video below to see his misadventures with it that ultimately led to his gorgeous boards.
To get the tones from speaker to the Arduino, he hacked the Bluetooth speaker’s circuit board, redirecting its output to an Arduino analog pin. See the second video for his adventures in figuring out a way to encode those tones such that the Arduino can decode them and turn them into something for controlling the LED display.
And lastly, since he has a display, why not use it as a clock? He found that the Arduino’s internal clock wasn’t precise enough, so he bought a cheap analog clock and removed its quartz motor driver board. With some minor modifications, and a transistor to amplify the signal, he used the timing signals to keep his Arduino clock program’s time accurate.
While individually these hacks of [Joekutz]’s were enjoyable, seeing them all combined in one package seems like too much fun.
DIY LED displays are not new here on Hackaday. Check out this colossal one, aptly name Colossus, with 1250 LEDs in two square meters. Clocks also seem to be a favorite and we’re constantly surpised by the novel ways people come up with to display them.
10 thoughts on “How Many Hacks In An LED Display?”
Feature-creep is a bitch.. And the biggest reason I never finish my projects. :(
I can relate ;)
Wow, that is a nice way to easily interface between the BT and a web page.
For QA purposes at my job I also transmit data over audio. But for data encoding in the audio stream, I ended up simply FSK encoding a 8N1 UART stream (“0” -> 500Hz, “1” -> 1kHz).
It works quite reliably to boot :)
Wow [Joekutz] just leapt over so many obstacles in his path.
Unfortunately I dropped of the www at HTML 4.01 dtd strict or if you prefer XHTML 1.0 and I have been using tables of pixel cells as a canvas so this has prompted me to get on board with HTML 5. I just noticed there is a SVG element now as well.
It looks like he is assembling the sound by creating the actual math values using sin(x)
PS: He has the HTML (web pages) in a zip and they work fine in your browser if you download them and unzip them.
Because 1: the calculations are actually pretty simple and 2: (and more important): I can copy the HTML / JS wherever I want (PC Windows / Linux / phone / Tablet …) and it just works out of the box without further software.
Because it is more about complex rendering and interactive visual elements (mouse click/drag/drop). An example would be robotic kinematic visualizations.
A browser window is very good at rendering and intuitive interactivity.
Another advantage is that:- If things get a bit heavy for a browser I can upload to a server and write a backend to do things like complex video/image processing in a more capable language like LUA or even PHP.
You want D3.js
“It looks like he is assembling the sound by creating the actual math values using sin(x)” – correct! audioContext works beautyfully low-level, you ask it the sample-rate (44.1KHz on PCs usually, 48KHz on many phones etc) and then create whatever wave you want in a number range between -1 and 1.
Please be kind and respectful to help make the comments section excellent. (Comment Policy)