Help for more output pins

Hi. I have created a big led display 72x32
it works with 4x72 simple 595 shift registers. (each shift register driver 8 leds).

so i have 4 rows with 72 shift registers on each row.
So i need 3x4 output pins ( latchPin,ClockPin,DataPin X 4)=12

Arduino has 12 ouptut. so i am ok on that, but i want more pins so i can install some compontents (for example thermistor,external eeprom).

i know that i can use arduino mega but i am using stand alone atmega 328 chip.

is it posible to use 2 shift registers (in a row) that they will "shiftout" the data i want to the other shift registers?

and how this could hapen?
can someone create a code example?

is it posible to use 2 shift registers (in a row) that they will "shiftout" the data i want to the other shift registers?

and how this could hapen?

Yes, that is how most serial in / parallel out shift registers are designed. You will need to refer to the specific datasheet of the chips you obtain to see how this is wired up. Generally the last data bit output is wired to the serial input pin to the next chip. The clock and latch pins are all wired together.

As far as the software, it's just a matter of how many clock pulses you send to the register string along with the serial data pin.

Lefty

Wait, wait.. I'm almost afraid to ask, but are you saying that you got 4 * 72 = 288 shiftregisters for your display? :-?

If so, then that is one massive circuit! Kudos for wiring all that! The advantage as far as I can see, is that it is a static display (IE no flickering/ update freq, for a static image at least).

The usual way to do it is with either row or column multiplexing / scanning. That way you can get away with 9 shiftregisters for the columns, and 4 for the rows (13 shiftregisters total!).. provided they can be updated quickly enough from the arduino that is.

A quick calculation indicates you need to shift out 166400 bits/sek for a 50Hz display, which should be doable.
( [72 columns bits + 32 row bits] * 32 rows = 3328 bits, times 50 = 166400), for row multiplexing, on average. Shiftout() probably works much faster (I would think), but you would need to hold one row for a little time anyway, 1/32th of a frame time).

Even less bitrate required if you swap most of the row shiftregisters with a real demultiplexer hooked up like a 5-to-32 (you probably need to chain several smaller ones, but functionality should remain the same. Like maybe two 74xx138s or '238s, depending on logic levels). And a little less bitrate again if you use a counter to select rows, instead of another shiftregister.

But you would have to have some line drivers or transistors, as the row shiftregisters or multiplexers (if you do row multiplexing) are very unlikely to be able to drive a hole row at a time.

... but I digress I think :slight_smile: Especially if you have built the circuit already.

is it posible to use 2 shift registers (in a row) that they will "shiftout" the data i want to the other shift registers?

and how this could hapen?

Yes, that is how most serial in / parallel out shift registers are designed. You will need to refer to the specific datasheet of the chips you obtain to see how this is wired up. Generally the last data bit output is wired to the serial input pin to the next chip. The clock and latch pins are all wired together.

I agree with you, and I think, if he have chained 4*72 shiftregisters he knows most of that. Except he didn't wire latch and clock pins together, but seems he has it as 4 separate "shiftregister lines".

But I got the feeling he is asking about feeding these 4 lines from the parallell outputs of these two shiftregisters, which would introduce another "level" so to speak (and delay) in shifting out data, where even the clock signals are part of these two shiftregisters output. The same data would have to be shifted out twice, only difference being the clock signals. And sometimes latches btw. Rather inefficient. But doable.

If I got it right that is...

But I agree with you, wire all clocks together, and all latches together. With the data output, he could get away with three outputs on the arduino.

As for the Arduino outputs (Amega 168/328), they have 14 digital I/Os, and 6 analog inputs that can also be used as digital I/Os, totalling 20 I/Os. Except maybe if you want to stay away from the serial port at pin 0 and 1.

Yes i am using 4x72=288 shift registers.
it is static and there is no flickering on leds.

i know the multiplexing method, but i prefer static.

i tried to wire latch pins together and it worked. But it doesnt work the same when i wire together clock pins.

anyway i am using now 9 pins. better than 12.

Ok.

Well it's hard to say without knowing how you have wired it all up. Also I've never used 288 shiftregisters at once :slight_smile: Do you use decoupling capacitors distributed near the power pins of the shiftregisters? Maybe not all, but say half / a quarter of them or something. I imagine you would have to.

So you use all 288 shiftregisters in series now? Just with different arduino pins for the clocks, and these clock pins are used simultanesously? I was also thinking it might be due to the load of 288 clock inputs on one arduino output, but somehow I doubt this. Unless you use the L / LS / S family, or another other current-hungry family.