Newbie questions - Arduino and addressable LED strips

Hi :slight_smile:
I don't own an Arduino, but I'm planning a project to use the Ableton music DAW to control LED strip lights. I want to be able to take a midi feed from Ableton and interpret it into light patterns on an LED strip. I know Ableton can do this directly using DMX drivers, plus it has a scripting language bolt-on called Max for Live that has a connection pack for talking to Arduinos and similar devices (Connection Kit | Ableton)

The kind of LED strips I'm looking at are either the ALITOVE 16.4ft WS2812B Addressable RGB LED Flexible Strip Light 5m 150 Pixels 5050 SMD DC5V or the 5m 5V Individually Programmable APA102 IC Epistar RGB 5050. Although I'm open to suggestions. As I understand it these strips have some built-in intelligence, and the lights are controlled through sequenced commands addressing the lights serially: 1, 2, 3 all the way to the end, then a resett command and the next sequence, over and over.

Questions:
I know an Arduino can drive these strips, but is it the best tool for the job?
How many strips and/or individual LEDs can an Arduino simultaneously control?
Will it start to lag if there are too many LEDs to address? (Synchronising with the music is important)
Would it be better to get a Rainbowduino, or is there something relatively cheap but better?

Thanks very much!

Arduino running fastled.h library, or adafruit neopixel library, can do the task.

Right, thanks Crossroads, that answers my question!

On a more practical level, with that kind of setup can you "strobe" a strip of leds at a fairly high speed, flashing full white on then off?

On a 16ft strip of leds could you chase the lights back and forth really fast, say several times a second? Can you do a colour wave that fast?

Count up the number of LEDs you have, multiply that by 1.5uS for each bit, then by eight for bits in a byte and finally again by three for the three colours to give you the update time.

Thanks Grumpy_Mike but could you unpack that for me a bit more?

Say if I had 100 leds, how many bits would that be?

100 * 1.5 * 8 * 3 = 3600uS to transfer the data into the LEDs.

This is 3.6mS or 0.0036 seconds or 1/ 0.0036 = 277 times a second

So you can update the entire strip of leds 277 times a second?

That should be more than fast enough!

Thanks Grumpy_Mike and Crossroads, this sort of expert info is absolute gold dust for a beginner.

How many separate LED strips can be connected to an Arduino?

Or is it the case that you could chain them together and address two or more through the same single connection to an Arduino?

Thanks again, tech gods!

So you can update the entire strip of leds 277 times a second?

Yes but that does not include how long it takes to set up the buffer for the next display, but it is fast enough.

How many separate LED strips can be connected to an Arduino?

As many as you have output pins.

Or is it the case that you could chain them together and address two or more through the same single connection to an Arduino?

Yes you can do that as well.

Note that for each LED you need three bytes of memory for the output buffer. The memory in a Uno is limited to 2K and you need some of that for other stuff. That is about 500 to 600 LEDs. If you want more then you can use an Arduino Mega which has 8K. But your power supply to drive that is going to have to be very big.

Ok great info, thanks very much!