Thanks heaps for the detailed explanation mate!
No worries mate
So if I am interpreting correctly, I would just cut a single LED and add it really close to the Octo and then run my UTP (which would have to now be stripped right back) from there to my first pixel on the snake? Would that "buffer" pixel require power?
Yes, and yes. Each pixel buffers & regenerates the signal to the next pixel, and requires power to do so.
8 banks of 6 rows at 2.5m running ws2812 150 LED/s per meter.
Didn't realise they made 150 LEDs/m strips. The densest I ever got was 144 L/m. In fact, I just checked and can still only find 144 L/m strips. What strips are you getting that give you 150 L/m?
You'll need to be really careful of a couple of things in order for this to work:
- Power -- each LED takes something like 34mA (when full on -- 'white' RGB:255:255:255). Not much, but multiply this by 144 and that's 5A / 25Watts per meter (even more at 150 L/m)! These LED strips tend to have very skinny power rails, and so they really struggle to carry that for much more than a meter or two without noticeable dimming and heating. This means you'll need to cut the positive rail (at most) every couple of meters to inject power using a fairly heavy gauge wire.
Furthermore, total current draw for a big installation can be huge. Just trying to work out your total LED string length - is each bank 2.5m, or each row? If bank, then you've got 8 x 2.5 = 20m of LEDS in total which is about 100 Amps / 500 Watts of power at full welly. If each row is 2.5m, then you've got 120m of LEDs which is 600 Amps / 3000 Watts of power.
Ummmm... that's huuuuge! What power supplies are you using?
Approach with caution either way.
Also, strongly recommend that each LED string power feed also be fused as otherwise you've got a major fire danger
Aaaaand - corollary -- cooling. LEDs don't like getting hot. How are you planning on mounting and cooling them?
- Bank length & timing -- What libraries will you be using to drive this? Are you using FastLED, Neopixel, just Octo, Fadecandy, or other...?? What sort of effects are you expecting to render? It takes approx 5ms per meter to update 144 LEDs. Sounds fast, right? Well, consider an effect where you have some sort of soft palette background colour for all LEDS, with a strong foreground colour which zips along from one end of the string to the other. If that foreground colour needs to go from pixel to pixel, and you want it to travel the length of a bank (2.5m) in 1 second, then you need (144 x 2.5 =) 360 updates (frames) per second. Unfortunately, at 5ms per meter, the best you can hope for is about 80 frames per second. Time to rethink that effect...
It's actually not such a huuuuge issue (though will stop FastLED from doing temporal dithering) as there are many workarounds / alternatives to creating effects -- but you'll at least need to be aware of this sort of constraint....
In fact, if this is your first project of this nature, then I strongly recommend you just buy yourself a Teensy, OctoWS2811, a couple of meters of LEDs, and a PSU, and do a bit of a proof of concept / prototype. Get everything nutted out fully before going the whole hog. Then, when you're ready to proceed, buy another Teensy, Octo etc for the production unit, and keep on using the test bench for prototyping & testing...
Would I be pushing my luck for an image on how you would wire that (or even just one "bank"/channel) off the octo? Just a quick sketch would be so appreciated although I fully respect that people are busy and no pressure if not.
Octo --- "buffer" pixel ------------------------------------------------------- rest of pixels
--- equals +/- power and data. Assuming 8 banks of 2.5m, then for each bank cut the positive line at the first of the 'rest of pixels' and half way along, and feed 5v power in half way along the strip or in both ends, whichever is easier. Don't forget the fuses! If feeding 2.5m bank of 144 L/m, each half requires a max of (1.25 x 5 =) 6.25A at full welly. M205 Ceramic 6.3A slow blow fuse (
https://www.jaycar.com.au/m205-cermaic-slow-blow-fuse-6-3a/p/SF2119) should be fine for that.
Also, don't forget to cut the USB power pad on the Octo if you're ever planning on plugging your computer in whilst powering the Teensy from the LED (or other) PSU!
The next thing is that would mean there would be a "dead" pixel at the end of each snake line right? Or do you just add the extra pixel somewhere in your code to counteract that?
Nope, no 'dead' pixels unless you want it. You address every single pixel & so get to decide what it does. Your code doesn't know or care about the length of wire between pixels.
The only constraint (unless you want
really tricky code) is to make each bank the same number of pixels.
In my setup I have three logical 'sections' of LEDs which I render effects to. One section is the 8 pixels which illuminate the Pi / Teensy / Octo (these map to physical pixel numbers 0, 342, 684, 1026, 1368, 1710, 2052, & 2394), one section illuminates a separate smaller recessed section of the room (mapping to pixels 1 through to 856 - skipping, of course, pixels 342 and 684), and the third bank is the larger approx 16.5m run (pixels 857 through to 2,735). In one option of my code I render three different effects (one for each logical section), and then map these out to the single array which represents the entire string, which then gets chopped into 8 banks by the library and gets streamed out.
it's amazing how much work the Teensy can actually do thanks to the Octo library's DMA magic coupled with the genius of the FastLED library!
I will post my code later if that helps.
Up to you...