10x10 LED grid

I want to have a grid of 100 LED's. They will be spread out to about 3x3 meters so I am concerned about excessive wiring, I want to find the most efficient way of putting them together. They need to be independently controllable, but I dont need PWM unless it wouldnt be too much harder. I thought maybe I could do it line by line, and just roll through the rows so i would only need 10 anodes and 10 cathodes, but then each LED could only be lit 1/10 of the time. And I wouldnt mind if I could expand the size so that would just get worse. Other than that I can only think to string a bunch of shift registers together, which wouldn't be completely undoable but it seems like there could be a better way.


Just curious. But why wouldn't you use multiplexing?

One thing that might help is a BCD-to_Decimal Decoder/Driver chip. With four pins to drive it you can turn on any one of the 10 output pins. If you use a separate pin for each row and column you need an Arduino Mega. The regular Arduino only has 19 addressable pins and two of those are used for serial communication if you want to control the array over USB.

If you need to free up more pins, the column data can be shifted into a Serial-in/Parallel-out shift register. This will use two pins.

If the power draw of the LED's is more than the Arduino pins (or driver chips) can source/sink you may need some drive transistors.

In a 5x5x5 led cube I build I really like the use of the 16 bit constant current output pins shift regesters. http://www.newark.com/allegro-microsystems/a6276ea-t/ic-led-driver-constant-current/dp/87K3398

The use of programmable constant current output pins solve a big design hurdle as led brightness becomes independent of the scanning rate you use. Just one resistor needed for each 18 bit device so current limiting becomes adjustable and minimizes component count.

Anyway one of these devices would handle the 10 row common connected leds (requiring only 3 arduino output pins), then you just need 10 arduino output pins to drive the common column led connections. Use the MsTimer2 library to setup up a scanning interrupt routine and it becomes a pretty straight forward project.