Take a look at this breakout board for the TLC5947 PWM driver chip. This chip can control 24 separate channels of 12-bit PWM output. This is great for LED control, and unlike most drivers, this board has a built-in PWM driver chip. This chip is designed for LED control and is not good for driving servos. If you need to control servos, we have a controller here.
You only need three "SPI" pins to send data (our Arduino library shows you how to use any digital microcontroller pin). Best of all, the design is completely chainable. As long as there are enough power and ground connections, you can chain together as many as you'd like, like a little blue LED chandelier of LEDs. Each of the 24 outputs is constant-current and open-drain. You can use up to 30V V+ anode voltage to drive multiple LEDs in series. If you want to drive something that requires a digital input, you must create a full-wave drive from the driver pin to your logic level with a pull-up resistor.
A resistor is used to set the current for each output, which means that the brightness of the LED does not change when the power supply drops. We use a 3.3K resistor for about 15mA, but you can solder a through-hole resistor if you want to change this value. Check the TLC5947 datasheet for details on resistor-current values.
To make using this board easier, we've added a few extras: a durable 5V low dropout regulator (with reverse polarity protection, just in case), a green power-good LED, four mounting holes, and a current-setting resistor. A 0.1" header is also included so you can solder it on and plug it into a breadboard.
To use: power V+ with 5-30VDC and connect common ground to ground. Then send 3-5V logic SPI data to DIN (data in), CLK (clock), and LAT (latch). Pull OE high to quickly disable all the outputs - pull it low to enable PWM output. The Arduino library will get you started with blinking LEDs, installing the library, and running the example code with the specified pin configuration.