Author Options:

Shift register too slow for multiplexing? Answered

Hi, I'm trying to figure out working with shift registers. I bought a couple of 74HCT4094's, hooked them up through my breadboard to a small matrix with some LEDs and my Arduino.

Without multiplexing everything works fine, but no matter what circuit I build (changing wires, resistors, transistors, even the Arduino code), when I start to multiplex the LEDS clearly 'flicker' (is that the correct term?).

Is it possible that some shift registers are 'too slow' for multiplexing with Arduino?



5 years ago

It sounds to me like your shifting isn't happening fast enough, thus making the frame rate low enough to see the flicker. For this flicker to go unseen by our eyes, the refresh rate should be at least 50 Hz (50 times per second), and as Joe mentioned, your 4094 is running at megahertz (millions of times per second!) Chip speed is likely not the issue.

I don't suppose you could link the code that you are using? My guess (and it is just a guess) would be that there is an unnecessarily long pause command in there somewhere that is killing your refresh rate. Here is a well done instructable about multiplexing with a shift register and Arduino: https://www.instructables.com/id/Multiplexing-with-Arduino-and-the-74HC595/#intro

If it's 80 Mhz, wouldn't that be more than enough to multiplex 8 rows of LEDs?

I would think so what is your Arduino clock speed and what is your switching time it my be flickering because the LEDs are turning on and off faster than you can see.

25hz looks like flickering.

Did you check out the free datasheet at the link in my post? Just enter the part number in the serch. The transision times on the clock of the IC 74HCT4094 is 50nS And it my not match the transision time of the Arduino.

The only other thing I can think of is I had a simalar problum with a difrent IC I had to conect the LEDs like I did in my pocket anilyzer at this link.


Somewhere I read that the built-in LED on pin 13 causes flicker or some LEDs to remain lit in a matrix. The solution for some was to cut the trace, if you want to do that. Good luck.

Lot of people use 74595.