Controlling array of LEDs with two-levels of brightness (individually)?


I am starting a project that will use about 48 LEDs total.
I would like to be able to control them individually with only two levels of brightness.

The prototype is using a tlc5940 for full PWM control, but it really is overkill and there is so much unneeded overhead for just two levels of brightness.

Searching around, I didn't see any useful information for such a requirement, or a part that would drop-in.

I have plenty of output pins to spare, so the best solution may be bit bang the array in parallel and use port manipulation for speed.

Any approaches or suggestions appreciated!


On/Off, is that the 2 levels needed?
One solution is a string of TPIC6B595 shift registers, with Arduino PWM on the Output Enable pin for 255 levels brightness control.
Or some WS2803s, 18 outputs each.
Or just use a single MAX7219, control 64 LEDs, easy to access with SPI, 15 levels of brightness. $1.25 at taydaelectronics.

WS2803-preliminary-En.pdf (437 KB)

Sorry, that should be two levels of brightness plus off (bright, dim, off).

It is my understanding that the max7219 applies brightness to all outputs simultaneously, and would be a similar situation with the 595 using PWM on OE.

Maybe updating the 7219 twice consecutively, controlling brightness between updates would allow persistence of vision to show individual dimming of LEDs, hmm...


Hmm, maybe I was overthinking this.

The 5940 doesn't need constant refresh (duh!) so the overhead isn't as bad as I thought when compared to scanning an array manually.

I will see if I can use the dot correction of the 5940 to reduce the control to 6 bits per channel, instead of using grey scale. This may not be too bad.


Ok, let us know how you made out.