Multiple LEDs with analogue output

Hi,
I want to control 15 LED devices. Each of these devices requires three analogue inputs fro the RGB channels (0-5v). I've been looking around and there are many solutions to control digital outputs (Charlieplexing, shift registers, etc.) but none that I've been able to find with analogue out.
Here is the sort of thing but instead of on/off control I'd like to set the voltage. I'd guess some sort of programmable chips exist but I'd prefer a solution that is wholly controlled from the Arduino's pins.

Here is the sort of thing but instead of on/off control I'd like to set the voltage. I'd guess some sort of programmable chips exist but I'd prefer a solution that is wholly controlled from the Arduino's pins.

The Arduino (at least the basic types as the UNO) don't have an analog output where you can set a voltage. The "emulate" such an analog output using PWM (pulse width modulation) which means the turn a digital output on for some time and then off again for some time in quite a fast manner (several hundred times a second). That's a perfect way to dim LEDs because the human eye won't notice the fast on/off switching and get fooled to see a dimmed brightness value.

What kind of Arduino are you using? What LED devices are you talking about (links)? Do you want to dim them all together or each individually? You won't be able to control all devices with just the Arduino itself, you'll need some external hardware to provide enough power to the LED devices.

Controlling LEDs with an analogue voltage is such a bad idea because there is so much dead space in the control. For example it won't even begin to turn on until you have got about 2V across it, then by the time it has 3.5V across it you don't get much perceivable change with higher voltages.
There are a lot of bad designes on the Internet so as there are no examples of doing this you can find tells you just how bad this idea is,

I'm using Ikea dioders (hacked here).

Using pulse width modulation should work with a shift register solution then. That would greatly simplify what I need to do.

Thanks for the feedback, I'll go with PWM then and see if the LEDs work with it (I have some to test).

The Arduino should be fast enough to PWM the shift registers. But if you can't be bothered to do this then one option is to use shift registers to gate transistors. One transistor per LED pin. There are ICs that combine multiple transistors. You then can PWM the power you're feeding the transistors. I believe that should work, no?

Here's one way - use three PWM outputs to drive the LED anodes - all the Rs on one, all the Gs on a 2nd, all the B's on a 3rd. Then use two shift registers with one output to each cathode. Simple multiplexing - send out the 3 values for LED0, turn on its output for 1/30/15 seconds = 2200uS. Turn it off, send out next 3 values, turn on the for the next LED.
When on, each cathode coud have 3x20mA = 60mA, so use a high current shift register like TPIC6B595.