Light-emitting diodes (LEDs) are wonderful devices. They provide a useful output—photons—and all they ask for is a little current. They have just two terminals and figuring out how much current (or voltage) to drive them is relatively easy. Sure, they have their quirks (V-versus-I nonlinearity, variations in output over time, temperature, and drive current) but overall, they are fairly straightforward to design in.
But their virtues and simplicity means that they are also popular and used in multiples, and that's where the real design challenge begins. Do you run multiple LEDs as a series string? Or as a set of parallel LEDs? Or as a combination of series and parallel LEDs? Do you use pulsed or steady-state drive? What about PWM versus analog control for intensity? Independent control or group management? What control interface format for the driver IC?
There is no simple or right answer, of course. Each combination and drive topology has tradeoffs in consistency, flexibility, drive requirements, and matching. You have to give some thought to how you arrange and drive even this simple component, especially if you are using more than just a couple of them in a larger display arrangement.
The good news is that IC vendors know the enormous market opportunity in LED drivers. At least twenty analog/power IC vendors offer these drivers, supporting basic single-string arrays with no dimming control to ICs for multiple, independent LEDs with individual or paralleled dimming control.
Of course, along with this good news, there is also some bad news. What started out as a simple part of your project–driving some LEDs–now requires going through data sheets from a lot of drive-IC vendors, to find a part with the best-fit combination of features, performance, and price. But once you get beyond a basic driver, there is relatively little similarity or standardization among these ICs, so this can become a time-consuming, frustrating exercise.
It's almost enough to make you want to go back to using just a solid power rail and a current-limiting resistor as the “driver”, so you can on with the rest of your project.
-x x x-