Arduino Control of High Power RGB LEDs

I’m trying to control an Cree XM-L RGBW LED with an Arduino Uno (for now) switching to one of my TinyDuinos when they arrive. The things require a fairly high amperage and I’ve been planning to power the thing with a USB backup battery such as this. What I’m having trouble figuring out is how to dim the four channels with an arduino to achieve the desired color mixing since the LED pins can only push a max of 400 mA. What should I use to control relative brightness and thus resultant color color of the LEDs? The end goal is to use data from the accelerometer shield that will eventually be arriving with my Tinyduino to affect the color patterns.

The power requirements are as follows:

Red: 2.25v @ 350 mA
Green: 3.3v @ 350 mA
Blue/White: 3.1v @ 350 mA

and the LED Calculator I used recommended the following:

Red: 2W or greater 8.2 ohm resistor
Green: 2W or greater 5.6 ohm resistor
Blue/White: 2W or greater 5.6 ohm resistor

LED Data Sheet

XLampXML_Color-218132.pdf (1.47 MB)

The use of resisters with high power leds is a bit troublesome... I would recommend using three PT4115 based drivers for the led. (about $2 each from DX) eg... http://dx.com/p/mr16-1-1w-320-350ma-constant-current-regulated-led-driver-8-40v-input-13553 They provide a constant current source, are small and can be dimmed with pwm. (solder a wire from the dimming pin on the PT4115 on the board and plug it into a pwm or semi pwm port on your arduino.)

That's how I would do it.

(just got my tinyduino.)

I would make four 350 mA constant current sources with LM317 adjustable voltage regulators, then use NPN transistors between the - side of the LED and Ground to switch them on and off. Use PWM pins to do the switching and you get dimming.

Google: LM317 current source

All simple solutions will dissipate a bit of heat, the "best" method is a boost or buck constant current DC DC converter, less wasted power, but more expensive (well maybe not on eBay!)