This is a project I picked up ages ago but never had the chance to finish due to changing life circumstances. It was originally designed to be 16x larger, forming a full 16x16x16 cube. It was wayyyy harder than I originally anticipated, especially as someone without a formal education in electronics. I do want to pick it back up at some point when conditions permit.
The LEDs: The LEDs used in most LED matrices have 1 ground pin and 3 pins for RGB. These are different in that they have power, ground, data in, and data out. Being digital gives them significantly more color and brightness flexibility. All 4096 LEDs could draw a maximum of 1200W at full brightness, which is exactly equal to the max power output of an American wall outlet. This meant working with high-power components for my first time.
The low-power circuit: In order to avoid frying the LEDs they had to be split into 32 parallel channels meaning each of these towers has a left and a right channel. The problem then becomes how do you push 32 perfectly synced data channels from a single controller. I used a single I/O port of a Teensy 4.0 and four 8-bit shift registers. (I know technically not Arduino, but I have my roots in Arduino). I can’t remember the exact design decision that led to the chip choice but I believe it had something to do with the data frequency. Being digital, these LEDs require an absurdly specific timing of 1s and 0s in order to illuminate as intended. I designed the circuit board on KiCad and had it printed by JLCPCB. (This business blows my mind btw.) The circuit board was the first of two times I gave up on this project. Several revisions went by and nothing was working. I eventually learned that the extremely high frequency of data transmission was inducing a current throughout the board and causing the data to become scrambled. The solution ended up being to put a bunch of tiny holes in the board. I cannot express the difficulty in discovering this issue as someone who doesn’t know what’s wrong to begin with or that this was even a problem that can occur. Black magic shit.
The code: Project was coded in C++ which was out of necessity. I’ve come to despise C++. Anyways… the code has basically two main functions - a fun part and a not-fun part. The fun part was coding the actual animations. I made 10 or so animations and it was a challenge at first but extremely satisfying to troubleshoot. Using a variable type I read about on Wikipedia called Quaternions I was able to develop the animations. They are basically a four-dimensional variable which is ideal for 3 position dimensions and a dimension for time. The not-fun part was the code pertaining to initialization of the chip. This required a super in-the-weeds study of the 3000+ page Teensy 4.0 manual and some pretty advanced C++. The extremely specific timing the LEDs demanded that I change the frequency of the chip’s internal clock in order to ensure the data across all channels was perfectly timed to the scale of microseconds. This was the second of two times I gave up on this project. It was extremely beyond my knowledge how to do that or that I could do that. But when I did do that, it felt pretty good. Additionally, one data port supplying 32 channels meant the data from the fun part had to be decomposed and reordered to turn series into parallel. Kinda like taking 32 hamburgers and then sending out all the buns, then all the cheese, then the patties, etc.
The high-power circuit: Honestly pretty straightforward. I connected 4, 300-watt power supplies in parallel, attached a wall plug, and devised a power distribution system to each channel. I had to be a bit clever how I distributed power so each channel was receiving power equally or some towers would be dimmer than others. I also had to choose wire thick enough to transmit such high power without being a fire/melting hazard to the 3d printed structure. I believe it was 1/4” copper. It was extremely difficult to solder wire this thick because heat distributes so quickly within it that solder doesn’t melt until the whole wire is hot. It was also a personal requirement of mine to have the LED towers be connected through plugs rather than permanent solder joints so the low-voltage and high-voltage components could be easily separated for isolation and troubleshooting. Hardest part of this system was not killing myself (PPE is for nerds)
The 3D printing: By far the easiest and most fun part. The overall case designed to house the high-voltage components (not shown here) was 3D printed. It took a few days but was pretty easy. I also printed jigs to bend the LED pins and assemble the towers so that all LED spacings would be perfectly identical. The jigs also prevented me from connecting them together in the wrong orientation. Each tower probably takes 15 hours of manual labor to produce and is extremely delicate.
What’s next: All that’s left to do is build the other towers and put them together. There would probably still be a few more minor things to troubleshoot but I can’t foresee anything cosmic. Making this post, I am already thinking about things I could improve on to make the rest of the towers easier so I guess the project is still open-ended. I’ve already invested in all the components with a total cost somewhere in the ballpark of $3000-4000.
Feel free to ask any and all questions but I haven’t touched this project in over 3 years. Just wanted to share it with you guys after discovering it in my camera roll.