0

For a project I need 400-1000 pins controlled by one arduino. Each pin should work similar as arduino pin, so something like 5V, 90mA. Is using dozens of shift registers a good idea? And what power source should I connect? My idea is following:enter image description here

So one shift register requires 3 input pins to control it, and if one shift register has 12 output pins, I can connect 4 more shift registers to one shift register. Is it a good idea and will it work?

  • 2
    Shift registers can be daisy chained. But why do you need so many pins...? – Majenko May 18 '17 at 8:52
  • 2
    Please be more specific about what it is you try to make. – Gerben May 18 '17 at 10:20
  • Why are you powering the Arduino and shift registers separately? And why the shift registers by batteries? 1000 pins at 90mA each will be at max 90A. – gre_gor May 18 '17 at 12:41
  • whatever you want to do, there has to be a simpler, better, and cheaper way of getting it done. tell us more and i doubt you'll regret it... – dandavis May 18 '17 at 21:50
5

You don't connect shift registers as a tree. That would be awfully slow. Instead, you connect them as chains. Shift registers are meant to be chained by connecting the serial out of one register to the serial in of the next one, while both registers share the latch and clock lines. You can chain as many as you want this way: a chain of four 8-bit shift registers behaves like a single 32-bit shift register. See for example this Arduino tutorial on the 595 to see how the chaining works.

There is an issue, however, in making long chains: whenever you want to change the state of one single output you have to shift the whole chain again. And the longer the chain the longer it takes. Thus it is more efficient to put in a single chain outputs that you will likely want to change together, and use independent chains for outputs that are most likely going to change at different times.

As for the wiring, you need three Arduino pins to drive one chain of registers: data, clock and latch. But you can share the data and latch pins between many chains, as long as you have a dedicated clock pin for each chain. You should then be able to drive n independent chains using n + 2 Arduino outputs.

As for the power, you have to estimate your power consumption (not just the shift registers, but also whatever they are sourcing current into) and find a 5 V power supply big enough to power your whole circuit.

  • But will shift registers support analog and digital input output pins? And lets say there are 500 pins, what approximate time is needed to update pins state? Is this resulting delay takes microseconds, milliseconds or noticable fraction of a second to update pins? Thanks – rint May 19 '17 at 21:32
  • @rint: My answer was written thinking in terms of digital outputs. You can find parallel-in serial-out shift registers that can do digital inputs. Neither type can do analog, but you can look into analog multiplexers for that purpose. You may want to time a loop of shiftOut() to get an idea of the time required (one call to shiftOut() outputs 8 bits). – Edgar Bonet May 20 '17 at 7:20
0

Here is a whole different approach.

Look at how they built the motion-controlled coffee table:

http://www.evilmadscientist.com/?s=LED+coffee+table enter image description here

It has hundreds and hundreds of connections, so they subdivided the board so they could have distributed Arduinos.

So it is possible to control that many pins, and it may be best to use multiple Arduinos.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.