Not too long ago a friend of mine who makes guitars asked me for help with using LEDs to add even more blinky bling to his creations. So far, so good; if you give me the bloated corpse of a yak I can show you how to stuff LEDs into it. However he wanted the LEDs to be programmable so that he could incorporate them into the visual design of his guitars and, dammit Jim, he’s a guitar maker, not a programmer.
I needed an interface that he could use that would be user friendly enough for a non programmer but still give him a good degree of control of how the LEDs are sequenced. Not wanting to write any sort of GUI interface to sequence the lights I figured out that you can use the drawing/painting features of a program such as Photoshop to program the lights.
Ultimately I settled on building the controller around a small Arduino mated with a TLC5922 for driving the LEDs. The TLC5922 provides 7-bits per color of intensity control, which isn’t great, however its one big advantage over say a TLC5940 is that it controls the brightness of the LEDs by current regulation, as opposed to PWM. In other words, when you ask a TLC5922 to dim a 20mA LED to 50% brightness it will proceed to drive the LED with 10mA of current. This differs from PWM regulation which would give you 50% brightness by turning your LED on and off blindingly fast. The PWM solution will give you better color however it also generates a lot more electronic noise. When you’re going to be working from the inside of a musical instrument, noise is bad.