For a while now, I’ve been thinking of assembling a homemade 16X16X16 cube built from 8mm RGB LEDs with embedded WS2811 chips. These LEDs are identical in appearance to the basic common cathode (or anode) but the 4 pins are GND, +5V, IN and OUT instead of the usual Common, RED, GREN and BLUE. The reason I would specifically use these embedded LEDs is to achieve the lightest possible, near invisible frame around the LEDs. It will be an assembly and soldering hell and but I’m just about ready to throw $$ on that project !
Now, with a single Teensy 3.1 and it’s 16 pins of parallel output, each pin would serve 256 LEDs (one ‘layer’ of LEDS). That means ~ 7.7 ms update (or 130 fps MAX!) for all LEDS right ?
Considering the requirement for complex pixel animation calculations, what kind of fps can I reasonably hope to achieve… 100 fps ?
Is that sufficient fps for smooth, complex animations or should I aim immediately for 2 (or more?) synched Teensy 3.1 ?
I must admit that I immediately thought of “Thompson’s Rule for First-Time Telescope Makers: It is faster to make a four-inch mirror and then a six-inch mirror than to make a six-inch mirror.”
What’s the biggest cube you’ve built before? Might be worth doing a small (4x4x4?) prototype that still uses full parallelization of output and see what gets learned?
All a matter of personal preference and experience level!
I have never built a cube but have taken on quite a few electronics project over the years and more recently a few Arduino based multi LED projects like a RGB LED clock with 555 WS2811 with 8mm and last December, a Xmas tree with 332 of the same WS2811 with 8mm RGB LEDs. Have a quick look (again … at these in the 'Show off your work" section.
I am not at all worried about the basic design, assembly and soldering part of this. The actual complexity for me will be in the programming of animations as my programming skills are somewhat mediocre but I intend to learn significantly through this!
I understand your concern but I am just about committed to this project. The only question I have is about the fps issue and choosing a single vs dual or multi Teensy 3.1 approach. Any ideas there ?
I’ve never built a cube before myself either; didn’t mean to besmirch your considerable expertise!
As for FPS of animations, I sometimes do this for a test:
write animation to scale to NUM_LEDS pixels, or some other scale param (eg, cube root of NUM_PIXELS on a side for cube animations)
get it running on a test rig with far fewer LEDs, eg 64 (aka 4x4x4)
change NUM_LEDS to the big number eg 4096 (16x16x16), recompile, and run
check out what FastLED.getFPS() tells me
The actual LED strip or array has no idea that there aren’t real pixels connected past the end of the short test rig, and you’ll get real-world timing.
As you’ve already computed, each update to the LEDs will take a certain amount of time; the real question is how complicated an animation are you trying to run? How much CPU is needed to render it into the leds[] array.
@Peter_Chestna has done some animations into an 8x8x8 cube on an ATmega, and is porting to SparkCore. Perhaps he can share some observed frame rates?
Following your hint, (dammit, you were right again !) I am now thinking that I will start this project ‘kinda small’
Still a 16X16X16 cube, I just can’t get that size out of my brains and that is after seeing some of the awesome complex animations on 32X32 2-D arrays and thinking that the next step has to be 3D !!
I will initially have a single Teensy 3.1 to drive my LEDs but will design the mechanical enclosure and wiring aspect to easily accommodate a dual or even a quad Teensy 3.1 setup if necessary. That will not add much complexity to my initial design idea.
That will allow me to play and learn to program more and more complex animations and determine if adding more Teensies is warranted.
I have seen a number of really nice animations from different sources already, most of them running on 8-sized cubes but also some on the bigger 16-sized and I will surely ‘borrow’ code as available.
Yeah, the “L3D Cube” http://www.l3dcube.com/ seems to be evolving in a good direction, software-wise; they’re starting to have some really nice animations. (Not least of which was written by the aforementioned @Peter_Chestna .) That cube is SparkCore-based by default, and now that FastLED is up and kicking on the SparkCore, presumably people can do more interesting things there using that.
I like your idea of leaving room both physcally, and from a wiring point of view, for future Teensy’s!
This sounds fantastic, I can’t wait to see your progress! I wish I had the skill and patience to take it on.
I assume you’ve seen the L3D Cube? The 8x8x8 version runs on a single Spark Core. They have a 16x16x16 version (for $2.5K!?!), but I can’t find any details on what they drive it with.
The L3D Cube is, indeed, a single SparkCore, driving everything (I think??) from a single IO pin. So for the 8x8x8, that means a maximum frame rate of about 60 updates per second.
If the 16x16x16 cube is wired all in serial, those 4,096 pixels can’t be updated more than about 10x per second. I’ve just posted a question on the L3D forum asking if the big cube is all serial or divided into multiple parallel strings.
Yes I have seen it and admit that it got me excited over the 16 cubed but the $2k5 pushed me towards my own build !
Now, I estimated the electronics of my project to cost me a around $1100 and I have not yet decided on the exact enclosure but it will not be clear plexi (I do not want those extra reflections!) but just a simple very open wooden (just love to mix that in with LEDs) 3-sided frame (TOP, BOTTOM and BACK) a few inches off the LED structure. That should be less than $100 or so.
So for less than 1/2 the price and admittedly a significant amount of time and effort (but hey, to me that is a positive thing… I’m expecting a ‘lighter’ cube frame wise (the LED interconnect part) and with the bigger 8mm RGB LEDS , a huge improvement over the LED to frame ratio, leading to a better view of the back LEDs.
I can only foresee a stunning showpiece and a fine, fine toy for me for a good while…
Notice that his creation did not make use of addressable LEDs, he has a massive set of wiring and electronic circuitry on many PCBs that does the LED multiplexing. I have the benefit of a few years improvements to LED design and I intend to use that.