I’ve been working with the WS2812B led strips and the FastLED library for a while now. But I’ve used only about 200 LEDs at a time. I wanted to scale up to 1600 LEDs for a huge lighting installation and I have some questions about the memory requirements. I know that people recommend the Teensy board for controlling LEDs in large numbers but I currently already have two Arduino Megas which I want to use. I wanted to understand if driving 1600 LEDs on one Mega is possible as each led requires 3 bytes and the Mega has about 8Kb of RAM, so theoretically it sounds alright?! But if it’s not possible, what is the maximum number of LEDs I can use with one Mega?
Maybe I can control 800 with one Mega and the rest with the second Mega and have them synchronize via I2C?
Also does daisy chaining the Data connections reduce the speeds/update rate? Is it advisable instead to connect blocks of say 300 LEDs to different PWM pins as opposed to a single PWM pin for 1600 LEDs?
I successfully used the MEGA on a WS2811 RGB LED clock with 555 pixels. That is the biggest project I did using the MEGA. If I remember well, there was still plenty of memory available, you should (??) be able to drive your 1600 WS2812b but you will have very limited (lower than 20 frames per second) animation speed.
I suggest that you connect your existing 200 LEDs to your MEGA but still define and setup for 1600 LEDS AND write all the animations you plan for your final setup. If the sketch compiles AND the first 200 LEDs behave as you expected, you should be OK. Check the memory use following compilation message.
I had the discussion about using multiple pins vs single pin on the MEGA with the Library author (Daniel Garcia) and to the best of my understanding, it is slightly more efficient to use a single pin on the MEGA as there is some additional overhead tasks to switch the data output between multiple pins. Note that the MEGA cannot handle parallel data output.
In my humble opinion, for so many WS2812b, you should go with the Teensy and also include the OCTOWS2811 adaptor to benefit from the 8 channel parallel output
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.