While we didn’t use FastLED for this, there were some really helpful tips here on driving all these APA102 leds.
In the end we had 1768 leds being driven as 17 separate strips by the LEDscape engine running on a Beaglebone Black. These were all output through one of RGB123’s excellent breakout boards.
The entire array is running off of a single 600W 5v supply. We actually turned it up to 6v to account for the voltage drop when the LEDs go full white. We then have a second internal regulator to ensure a stable 5v supply for the beaglebone black, while the breakout board level shifts the 3.3v signals up to whatever the LED voltage is at the time.
This all seems to work great. These animations are actually being generated in JavaScript using NodeJS via our FLED engine (https://github.com/SupplyFrame/fled). Once the pixel data is calculated it is streamed over wifi at 30fps to the beaglebone black, which then renders it out to the leds via LEDscape.
Interesting! Last I checked, ledscape was for WS281x chips (ie single data line, whereas APA102 uses clock and data), was the code modified to work for apa102?
Slightly modified version here for setting global brightness more easily:
Found this quite useful, as the array was far too bright for the office at full brightness, that is a lot of LEDs after all. In the end turned it down to about 40%. The global brightness bits in the APA102 protocol were great for this as it means you keep the full 8bit resolution for your colors while lowering the brightness across the whole array.
Wow actually there’s a TON of new changes in that fork…I thought the project just kinda died after they did the disorient pyramid. I still have a bunch of BBBs laying around, might be worth me looking into
Yeah the YonaAppletree fork is great, no need for all the external hardware either, though I did end up using the RGB123 cape as it does make all the level shifting a whole load easier. I think for large scale stuff its a pretty easy and powerful setup now, though obviously a lot more expensive than a Teensy 3.1 and some level shifters with FastLED.
yeah, well if youre gonna be doing a huge project you probably want to go with something bigger than a teensy with fastLED (which is a project really optimized for portable controllers, as I understand). How fast are you able to operate the APA102 with LEDscape? there’s been talk here about teensy hardware SPI operating at 24mhz to give a solid 30+fps framerate for strands up to 500-600 LEDs
So the APA102 implementation runs somewhere around 1.6mhz, it will take a fair bit of rework to make it faster since its doing a lot of data manipulation for each pixel (building the bitmasks etc). I believe Yona is working on a new version that will have a single clock line and be able to drive up to 48 apa102 strings, i think when that is ready we should be able to make a much faster APA102 program for the PRU since it will be dealing with half the number of bits (only one clock line instead of 24).
With 1768 leds connected the code is however streaming out around 200fps for the LEDscape side. I’m sending data over the wifi at around 30fps so this is plenty for my purposes.
awesome! That’s really exciting. APA102 has a lot of potential to be run really fast, so for a BBB which is great for doing larger projects, I think that will unlock some awesome capabilities.
Now if only it had the same awesome color math as FastLED
Well the LEDscape project actually has dithering and color correction built in, so that side is covered, doesn’t provide anything else for actually creating the animations though which is a shame. Could be a good opportunity to pull in some of the FastLED code ported for x86 though.
But like I said I ended up streaming it data from a Javascript app that was running code on NodeJS on a more powerful server, that let me use the great THREE.js color and math libraries which makes it pretty easy to do color stuff and all sorts of animation things. This really is for dynamic use though, its actually part of the Supplyframe office front-end programmer test now! We sit them down and give them the interface and say “Make something cool, you have 1 hour”.
And yeah, I think it makes sense to have LEDscape as it is, it makes an excellent driver for externally generated graphics. If you want to do that with teensy it starts to get a bit convoluted cause then you have to worry about all the interrupts or sending data over serial, etc…at that point its time to move to something like BBB.