Author Options:

Shift Registers vs LED Drivers? Answered

I am trying to figure out how to program an arduino to control LEDs. Basically, what I have done, is I have made a 3x3 matrix and can program some simple sequences with the LEDs using the digitalWrite and delay functions.  I'm not even sure that this is the right way to do this, I don't think it is, but it works.  Anyway I want to try to program bigger matrices and maybe LED cubes using my arduino, but without using up all of the output pins. So, I've came across two ways to get more outputs from less pins; LED drivers and shift registers.  These may be the same thing and I'm just not aware.  But anyway, is there a difference between them? I've really only found information about shift registers, nothing really about LED drivers.  Is one easier to program? Does one use less pins than the other? Or are they just the same thing?


LED drivers usually incorporate SPI (shift register) interfaces. Some let you set the brightness of each LED in software. Some address 16 leds or more per chip. All have a SINGLE resistor to set the maximum LED current.

Shift registers on their own will not drive LEDs well.

People like Maxim have complete, single chip solutions that drive 8 X 8 matrix direct


They have a huge range of LED drivers !


"Shift registers on their own will not drive LEDs well"

Really? I don't know really anything about this, but I've seen a lot of projects the use shift registers to light LEDs. And from the things I've seen about how shift registers work, it seems like they'd be ideal for lighting LEDs.

Just because you see them used doesn't make them good. A typical red led takes 20mA to run at full brightenss. A 595 can "JUST" drive 35mA, and if all the outputs are on, the chip will burn out.

In a typical LED cube, you are multiplexing LEDs, so the LED is on for typically only 20% of the time, when its on "constantly" - then another LED is on for another 20%, another 20% etc, and the cycle repeats. Running at 20% makes the LED 1/5 of brightness of the full, constant 20mA. Using a 595 means we CANNOT bring the device to full brightness or closer. An LED driver chip can drive 80 or 100mA into a single diode, for 1/5 of the time, so the LED is as bright as possible. That current is also set by a single, low wattage resistor for all the LEDs on the chip, and not by resistors on each LED.

Hence I say shift registers don't drive LEDs well.

LED drivers are just power supplies for LEDs made to provide a constant current. Typically used to run high power LEDs.

There are a great number of LED matrix and LED cube projects of all shapes and sizes on here. See what they did to acomidate more LEDs on thier arduinos.