Driving multiple RGB strips independently...

I've spent the last 4 weeks reading up as much as I can on driving RGB strips via the arduino but can't seem to find anything that's addresses my specific needs. Hopefully someone can give me some direction. Btw- newbie to electronics and arduino, veteran programmer so I'm comfortable figuring out the processing aspect of the project.

Here's what I'm trying to do:

I'm building a custom staircase with frosted glass inserts in the treads. I want to use RGB strips to backlight the glass inserts. I've tested it with a single RGB strip and it works great. My challenge is how to replicate what I have 18 times (one strip per step). I would like to have each step controlled independently so that I have greater flexibility. Each step will have three segments of RGB leds. These are the ones I plan on using RGB LED weatherproof flexi-strip - 30 LED/m : ID 285 : $80.00 : Adafruit Industries, Unique & fun DIY electronics and kits.

What type of components should I use to drive these? I've researched shift-registers (74HC595), PWM shields (TLC5940), drivers (ULN2003) and can't figure out what will support my needs. I would like to have PWM for all the strips but that means I need 54 PWM outputs.

Any help would be greatly appreciated.


Yes, all of those will work, although do different things.

Your led strip is controlled, as far as I understand, just like a single rgb led with a common anode. So any solution allowing yo to control 18 individual led will work for the strips too, although you'll probably need another transistor at the output to switch the current.

If you use a shift register like the 74HC595, you will need one pin per colour for a total of 54 pins, thus you need 7 74HC595. This is a very simple solution but it has the drawback, that you can only turn a colour on or off, giving you only 7 colours. If you attach the output enable of all shift registers to a PWM pin on the arduino allowing you to dim the all strips the same amount. Individual PWM of each colour to get different colours or intensities at each step isn't possible.

If you use the TLC5940, you have individual PWM control of each pin, although you'll need 4 of them to get full control. The main drawback may be costs.


Thanks for the quick response Koman.

Sounds like TLC5940s are the way to go for me since I do want to control each pin with PWM. At ~$6 per IC, it's fine for this project. One more question, do i need any other drivers like a ULN2003 to power the individual strips?

They are going be powered by an external power supply - 12V. Each step has 3 segments drawing about 180mA (60mA per segment). Do I need MOSFETs or other power transitors to drive the full power to the strips?

Time to check the data sheet. From a first glance, the TLC5940 seems to be able to sink up to 120mA per channel, although I haven't checked if there's a maximum total current it can sink and if cooling is needed.


I have a similar query here: http://arduino.cc/forum/index.php/topic,56004.0.html
I am using mosfets to have pwm control over each LED channel.