I want to control 10 different 12V RGB LED strips independently from a single Arduino.

As a clarification - I've setup a bunch of NeoPixels and understand how to wire and control them independently. So now I'm looking to do something similar but rather than set color of individual LED's, I'm looking to set color of LED strips.

I've already done all the research to understand how to use a MOSFET to control a single strip - but that requires 3 PWM outputs on the Arduino board and I don't see any boards that have 3 * 10 = 30 PWM outputs.

Are there existing controllers that can abstract the power conversion and voltage control, so I can just send a color and brightness setting from the Arduino to each strip?

  • How many leds per strip (i.e. how much current per strip)?
    – Gerben
    Commented May 12, 2018 at 15:10
  • How about using an extra chip as driver. Something like this. Or, if you haven't bought the strips yet, you can by the individually addressable strips. They don't need PWM, but only one pin for shifting out the data
    – chrisl
    Commented May 12, 2018 at 15:13
  • @chrisl - thanks for the reply. The chip as a driver looks interesting. To then control the color on an RGB strip would I need to connect a Mosfet to each R/G/B output of the chip? I want to avoid the neopixel strips as it's overkill for this project. I.E. I don't need to address individual LED's, but do want to control several separate strips.
    – Dan B
    Commented May 12, 2018 at 17:09
  • @Gerben - I'm hoping to connect many strips together to form larger strips. So probably 10 strips with each strip being 60-300 LED's
    – Dan B
    Commented May 12, 2018 at 17:10
  • Yes, surely you need a MOSFET for each PWM line, since LED strips with this many LEDs can easily draw multiple amps. I mentioned the Neopixels, because despite the individual addressing might be an overkill you don't need further components (besides a capacitor and a resistor). So this might be the cheaper solution, depending on the strips.
    – chrisl
    Commented May 12, 2018 at 18:21

2 Answers 2


You could use chainable RGB drivers like these:

They are based on the P9813 chip and can be used with the FastLED library.
You can find them on Aliexpress or eBay, if you search for "STM32 rgb".



Example code:

#include <FastLED.h>

#define NUM_LEDS 10
#define DATA_PIN 3
#define CLOCK_PIN 2


void setup() {
    FastLED.addLeds<P9813, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);

int hue = 0;
void loop(){ 
    for(int i = 0; i < NUM_LEDS; i++) {
        leds[i] = CHSV(hue + i*255/NUM_LEDS , 255, 255);
    hue += 2;

You'll need external circuitry to control the actual LEDs.

There is the WS2811 chip which can control 3 channels of 12V LED strips controlled though a single wire and you can daisy chain them controlling each strip individually. The protocol is the exact same as you'll find in individually addressable RGB LEDS. In fact it's the same IC that is embedded in those LEDs.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.