Hi! New user here.

Hi! New user here.

TLDR: Can I write to 2,000 WS2012 LEDs on a single line with FastLED? (I understand it may be slow).

I’m attempting a project that would have me drive 2,000 LEDs in strips. I picked up WS2812 strips. I had tested arrays of up to 600 lights prior to ordering these and didn’t think I would run into any issues. I was using the Adafruit library for driving them, and it was working fine.

Then I put together the first half of my art display, which contains exactly 1000 lights, 10 strips of 100 lights all wired together as a single strip, and found that mysteriously a length of 621 on my program would work, but 622 and anything higher would fail. I was puzzled and was not able to make much out of the assembly behind the adafruit library - and then I found FastLED!!!

I was reading the Fast LED library, and I found mention of the refresh being slow and that it is not recommended to do more than a few hundred lights. I also saw mentions of parallel solutions but the Octo libraries support very limited hardware. What I am wondering is, from a technical perspective, CAN I address 2,000 WS2812 lights on an Arduino on a single data line? I have plenty of power as I picked up a 5 volt 180 amp supply. Another question is, how could I calculate to determine what my refresh rate would be if it is possible?

Thanks so much for reading my long winded post !! :slight_smile:

It depends on which Arduino. Most of them don’t have enough memory for 2000 LEDs.

@Matthew_Christenson - In the following post here:

https://plus.google.com/108137339989177047463/posts/GCbGa8wXDoR

@Jason_Coon wrote:

“Yeah, no matter what microcontroller you use, if you’re driving 1,600 WS281X with a single pin, you’re going to max out at 20 frames per second. 1,600 LEDs * 30uS to write data to each LED = 48,000uS = 48ms = ~20fps.

If you use a Teensy 3.2 with OctoWS2811 adaptor and 8x parallel output, with each pin driving 200 LEDs, you would max out at ~166fps. 200 LEDs * 30uS each = 6ms = ~166fps.”

Also, use the Search Community box on the left side of this webpage and use the search terms FPS and frames per second to find more information to answer your question about refresh rate.

Q1) What I am wondering is, from a technical perspective, CAN I address 2,000 WS2812 lights on an Arduino on a single data line?

A1) Yes but as Paul mentioned, you must have enough RAM for all the pixel data (3 bytes X 2,000 pixels is about 6Kbytes) so a Arduino UNO will not work but a MEGA would work. Best would be to use a Teensy 3.2 with it’s OCTOWS2811 adaptor.

Q2) Another question is, how could I calculate to determine what my refresh rate would be if it is possible?

A2) Ken White provided a great post from Jason that explains this well.

Another advice would be about power distribution for your setup. It is not enough to just have all the amps required for all your pixels ( 2000 pixels X 50 milliamps per pixel = 100 amps so your selected PSU is more than adequate but you must have very very heavy wiring to handle 100 amps !!

I have no experience with strips this long, and have thought in the past that I wouldn’t care about a low refresh rate like 20fps. But I wonder how the 50ms difference between when the first led lights up to when the last one does looks on static scenes. Actually now I think about long it would take to move a color from one end of the strip to another (100s). Yikes!

@Gibbedy_G I think you got the picture with that 100 second calculation.

If you change all the LEDs from color A to color B, the low FPS does not matter but forget any idea of smooth and quick movement of a pixel from one end of a long string to the other.

Either jump 10 pixels at a time to get a 10 seconds elapsed time from end to end or 100 pixels at a time would give you 1 second but of course it will not look as smooth but the overall effect may be OK for you !

If you are working with that many pixels go for the SK9822 or APA102

@Gibbedy_G The way I understand it from the protocol docs, the lights do not change color while the data is being delivered, instead they store that value until it gets a reset. When it gets a reset all lights change to their stored color - so all lights should change at the same time even if the refresh rate is slow.

@Matthew_Christenson you are right about the protocol but I think you may have missed the point.

For data to propagate through a 2000 WS2812 long string takes 2000 X 30 microseconds or about 60 milliseconds. I think he rounded this off to 50 milliseconds but anyway… his point is…

If you want to move a single green pixel from one end to the other on a strip of 2000 LEDs it takes 60 milliseconds to write green to the 1st pixel and turn off all 1999 other pixels. Then it takes another 60 milliseconds to turn off that 1st pixel, set the 2nd pixel to green and all remaining 1998 LEDs off… etc… etc… So for a single pixel to make it all the way through the length of your setup, pixel by pixel for the smoothest possible animation would take 2000 X 60 milliseconds or 120 seconds !!

@Matthew_Christenson Thanks. I didn’t know that.