The Arduino is really popular, and it is open-source hardware, so there are variations, including the third-party Freeduinos called Bare Bones Board, the Really Bare Bones Board, and the Boarduino, which are very nice for using with breadboards. The standard Arduino is adapted using things called Shields. You can make your own breadboard shield or buy something like this ProtoShield Kit.
The Arduino uses an FTDI USB-RS232 chip or cable. [The standard Arduino has it build in, while the most of the bread board ones use a special cable that has the chip inside, and saves you some money.] There is a built-in driver for Linux, and Mac OS X and Windows users can download a driver. Effectively, this means that the Arduino acts as a device communicating on a serial port, and so it is very easy to communicate with.
To use it, you also download software. It comes with an IDE, an AVR-GCC toolchain, a really nice library, and software to upload your program on to the chip. It hides most of the details from you, and has a great community. It is programmed in a language called "Wiring", but it is really C++.
Lastly, being open-source hardware, there are schematics out there. Indeed, I seem to recall reading that it was fairly easy to build an earlier model. Searching for "Arduino schematics" in your favourite search engine will give you good results.
As for kits, the Maker Shed offers a lot of Arduino-related items in stock. They appear to ship around the world. Some ones of interest include:
The Shoppe at Wulfden (USA) has a nice experimenters kits, and appears to ship internationally.
Solarbotics (Canada) has a ARDX Arduino Experimenter's Kit, a Freeduino Starter Bundle - Ultimate and an Arduino Starter Bundle - Basic (and Ultimate), and appears to ship internationally.
The main Arduino's "buy" page lists Arduino vendors in all areas of the globe.
Other places I would check include Adafruit Industries and Sparkfun Electronics (both in the US).
Given: Cree XM-L LED.
Want: Up to 2A drive, PWM controled by PC via USB.
This can be two parts. ie actual LED drive and PC to LED drive interface. These may or may not be integrated.
A "very easy" approach is to
1. use an off the shelf USB to "output" device. "Output" may be analog level, PWM, 8 bit port etc to control ...
2. An off the shelf LED driver that uses analog or PWM input.
For example, the circuit below using a RT8482 requires an analog input level or PWM with a simple RC filter (to convert the PWM to analog). The analog could be provided by a USB to analog output I/O device (COTS) or by a USB to parallel port device (not a printer port per se) (COTS) with a simple R2R digital to analog converter (about 16 resistors plus maybe a cheap op-amp).
Many examples of R-2R ladders here - links live
Or a microcontroller with USB capability could have a relatively simple program written to provide PWM or analog output. A USB enabled Arduino or a Raspberry Pi would do this. (USB has to be slave not host mode).
LED drive:
(1) "Off the shelf" complete units that do the LED drive part of this job well are available at good prices from eg ebay, or Mouser and similar. Using such is a good default solution unless you have some reason to do otherwise.
(2) DIY LED driver.
Digikey LED drivers are found here. Alas the parametric search is poor in this case (which is unusual).
Searching using LED driver 2A gives better results.
There will be a nummber.
Example only: For $US1.52/1 in stock Digikey you get
1
Ricktek RT8482, buck or boost, LED driver.
Drives external MOSFET so LED current capability essentially unlimited.
Looks like a good start. 350 kHz for smallish inductors.
- High Voltage Capability : VIN Up to 36V, VOUT Up to
48V
Buck, Boost or Buck Boost Operation
C u r r e n t M o d e P W M w i t h 3 5 0 k H z S w i t c h i n g
Frequency
Easy Dimming : Analog, PWM Digital or PWM
Converting to Analog with One External Capacitor
Programmable Soft Start to Avoid Inrush Current
Programmable Over Voltage Protection
VIN Under Voltage Lockout and Thermal Shutdown
16-Lead WQFN and SOP Packages
RoHS Compliant and Halogen Free
A MOSFET suitable for use as M1 would be eg ONSEMI NTD4960 $US0.40/1 in stock Digikey, 30V, 9A, 9 milliohm on resistance nominal, logic gate - data sheet curves show good at 4V gate and say 4A.
ADDED:
Should I be looking at specific types of inductors for this sort of application
Inductors are very special for best results. If this is a one-off then off the shelf inductors from eg Digikey or similar are wise. We can give advice in this when final real spec is known.
I'm assuming all of the caps in this type of application would be ceramic?
Ceramic capacitors will work well for all capacitors shown. At least 10V rating. More or much more voltage OK.
D1 is Schottky and should have current rating equal or greater than LED max current.
Now I just need to figure out how to generate the PWM signal.
PWM is "easy" [tm] and may not be needed. Above LED controller example can use analog or PWM control.
USB to I/O
This USB to paraell FIFO I/O module](http://www.ftdichip.com/Support/Documents/DataSheets/DLP/usb245r-ds-v10.pdf) uses FTDI's FT245R USB-parallell FIFO interface IC - datasheet here .
Vast amounts of related FT245 information here
FT245 available from Digikey ~= $US4.50/1 from here
FT245 based module from Digikey for about $40/1 here
This page discusses a DIY USB printer port which, as you have complete control over the hardware and how it acts, could "easily" meet your need. Based on a PIC18F4550 microcontroller and not much else. All software PCB patterns, circuit etc free.
Typical commercial USB to analog device
Best Answer
Arduino IS based on a microcontroller (by atmel) and is basically a breakout board for such microcontroller plus some friendly way to upload a program to it.
It's programmable in c++ so it's quite easy and, as @Michael said, the community is huge. You can use the program on a bare chip without the board if you provide the proper connections, parts etc...
That said i'm a PIC user and i don't really like the bulkiness of arduino (both in terms of price, physical space and memory occupied by the bootloader) and the way its community works.
BUT if you want to program a pic or an avr you need an external not-so-cheap programmer (search for pickit2 or avr dragon...way more than an arduino) and a proper c compiler. Then remember that usb access comes at a price (i.e. writing a program to use it but then you need a way to program the chip in the first place!).
Arduino has everything you need to start FAST and such a program would be nearly trivial with all the libraries, a thing i wouldn't dare to say for a "from scratch" project like yours. Then again, if you want to learn bare embedded programming just grab a micro, buy or build a programmer, download the tools and start by blinking a LED then build from that. I'd advocate for PICs but really it doesn't matter. AVRs have nice open source tools while PICs are slightly cheaper. You'll find hundreds, thousands of discussions on which is best and why they're wrong :P