# Expanding IOs

Hi:

I was wondering:

I'm planning to build a 8x8x8 LED Cube, and by my calculations I would need 96 to 128 IOs, it is possible to expand the number of IOs to that?

Thanks

As the number of LED cube increases there is need for external hardware to drive the LEDs. I'm presently working on a 5x5x5 cube based on a pic project linked below. The use of shift registers allows one to drive nearly any number of additional outputs. Note that the register/driver chip they use allows has automatic constant current control for the LEDs, eliminating the need for lots of resistors.

Lefty

I'm planning to build a 8x8x8 LED Cube, and by my calculations I would need 96 to 128 IOs ...

What assumptions are you making?
I think it's theoretically feasible with 8+8+8=24 Outputs (which is more than an ordinary Arduino has), but your assumptions may be different. I wouldn't recommend doing it this way though.

..., it is possible to expand the number of IOs to that?

Yes. The most direct technology is Shift Registers. They allow you to expand a couple of pins to many, many outputs.

The idea is to send the HIGH/LOW state of 8, 16, or more outputs one at a time through a single pin (using another pin to say when the pin state is ready). Then the external shift register provides the actual output pin. This technology is low cost.

I'd recommend you try this out with something easy to make, like an 8x8 LED matrix display, to get a good understanding of how it works.

You might also want to look at using drivers (e.g. ULN2803) so that you can have lots of current to make the LEDs bright. This is also low cost.

HTH
GB-)

and by my calculations I would need 96 to 128 IOs,

well 8x8x8 = 512 LEDs so I am not sure I understand your calculations. You would need 64 outputs for one plane and then multiplex this in an 8 to 1 fashion. So this gives you 64 + 8 = 72.
The problem with shift registers is they take a longer time to drive the more outputs they have. You might be better off using something with a latch so you only have to drive the ones you want to change instead of all of them.

Well, you could use eight 8 bit or four 16 bit serial-to-parallel sinking drivers or 'constant current' sinking drivers for the 64 columns and eight P-FET plane drivers. That's eight pins for the plane drivers and another three pins for the , , and connection to the cascaded serial-to-parallel driver ICs. This provides a nice leisurely 1/8th or 12.5% duty cycle to better manage 'peak' current requirements and there should be plenty of time to load the drivers with 64 bits of data for each plane update even at relatively high refresh rates (for example, 1-msec intervals for 125-Hz).