Hello, first I want to thank everybody that participated in the creation and improvements of

(JP Roy) #1

Hello, first I want to thank everybody that participated in the creation and improvements of this awesome library !!!

I have already completed a clock project using it. I promise to upload photos & videos soon…

I am now starting another FASTLED project for a Christmas tree and have a question regarding the use of multiple arrays and/or strips on different Arduino pins. Is there any speed advantage in using multiple pins as opposed to having all LEDs daisy-chained and driven from a single pin ?

How does the FASLED.show(); work with multiple pins ?
Is there a way to only send one array of a multi-array ? IE: saving the time to update an array of LEDs that do not require change at that time !!

I understand that you may be working on a way to drive multiple pins in parallel. Any update on that ?

Thanks, JP

(Daniel Garcia) #2

https://github.com/FastLED/FastLED/wiki/Multiple-Controller-Examples has a bunch of info on using multiple controllers, including mirroring one array of led data to multiple strips.

There’s no huge advantage to it just yet - I’m still cleaning up parallel output support, and don’t have an ETA for it yet.

(JP Roy) #3

You are saying no huge speed advantage. I’m only guessing that you meant no advantage !

As the data transmission time for a very large array of LEDS (or multiple arrays on multiple pins) is my greatest concern for my next project could you please confirm that there is currently no way, using FASTLED library to send only partial data of an array or only send one array of a multi-array or only the data associated with a physical Arduino pin.

Thanks again, JP

(Daniel Garcia) #4

If you want to manage controller objects yourself, you can - this isn’t something that’s documented yet because the interfaces involved are still in flux.

But, short version, instead of using LEDS.addLeds, you could instead create your own controllers directly, e.g.:

WS2811<DATA_PIN1, GRB> leds1;
WS8211<DATA_PIN2, GRB> leds2;
LPD8806Controller<DATA_PIN,CLOCK_PIN,RGB> leds3;

and then call show on them directly, e.g.

leds1.show(leds, NUM_LEDS);
leds2.show(leds, NUM_LEDS);


There is, even with out parallelizing, still advantage to using multiple controllers. Some strips (LPD8806, WS2801) degrade in speed the longer the transmission lines. It can, as the link above described, make it trivial to send the same data out to multiple strips.

That said, I have the parallel code working (I’ve used it on both the Teensy and Due in projects) - now I just need to get it to the point where other people can use it as easily as the rest of the library (and in a way where I won’t get flooded with a bunch of questions on partially implemented/less than clean stuff).

(Daniel Garcia) #5

(Also, using controllers directly like this has a different benefit - slightly cuts down on the memory usage of the library - useful trick when programming on ATTiny85’s :slight_smile:

(JP Roy) #6

Ahhh… I will have to try your suggestion of creating my own controllers !

Last question… could it be:

leds1.show(leds, NUM_LEDS_1);
leds2.show(leds, NUM_LEDS_2);

Such that each array is of different length ?

(Daniel Garcia) #7

Sure, it could be! You could even change the number at runtime if you only wanted to update, say, the first half of the strip. Unfortunately, because of the way these leds work, there’s no way to update just the “far half” of the strip. But, you can always do a short update :slight_smile:

Also, there will be a very loud announcement here when the parallel output stuff is ready to go :slight_smile: Note that it will primarily only be available on the arm based platforms (teensy, due, [redacted]) for a variety of reasons.

(JP Roy) #8

The library is awesome but nothing like the support !! Thank you very, very much for your time.

As promised, I will post pictures maybe a short video of my finished clock project soon.

Thanks again, JP