One Thousand Points of Light...

Well, almost 1k, actually a 32x32 = 1024 Multiplexing Matrix!

I have invested many dozens of hours studying the many variations of ways of doing this and below are my layman conclusions. Please help correct my understandings and preparing a simple approach to development of such Matrix.

1- For simplicity and flexibility sake, the Arduino Mega with 54 input/output pins is the best choice, 1A- The Mega can take care of the 32 Rows of the Matrix.

2- The 32 Columns may best be controlled with 4017's.

Notes: A) My goal is to start with very simple version and as each stage of development is completed to add to it's complexity. So for now the objective will be to light only ONE LED based on a pattern of choice wait for 1 second and then the next etc. B) The LEDs will the be ones of an Opto Isolator hence the possibility to run 1000 of any components like Inductors, Motors or what not...

Can the Multiplexing Gurus please verify that so far I'm on the right track as far as choosing the Mega & the 4017 or not, before I proceed to the next step?


You could get the Seeeduino mega, has 70 digital pins.

But you're also going to need a fair share of transistors to power any matrix off an Arduino of any kind.

And as far as the 4017 goes, why would you choose the 4017? I've never used one but doesn't seem like it would be very useful here. You should look into using the 74HC595's. They're 8 outputs per chip, you can connect up to like 64? (not sure how many exactly) chips together with just 3 wires. Take a look, I think it's like.. halfway down, this gives a good explanation (and the BEST code I've seen so far for using shift registers)

The LEDs will the be ones of an Opto Isolator

This could be a huge problem for you later, when you start running more than one "point" at a time.

Visible LED multiplexing is based on the fact that it takes the eye a fraction of a second to recover from a pulse of light. So a LED that's on for only, say, 20% of the time will appear to be on continuously if the pulse is bright enough to cause "persistence of vision".

If you try to multiplex the control signals for motors, incandescent lamps, or most other loads, what you'll wind up doing is slowing the motor or dimming the bulb. In some cases, the load won't come on at all because the multiplexed signal doesn't provide enough energy to activate it.

This will get to "completely unusable" for almost all purposes if you try to multiplex 32-to-1. Even for POV-based LED displays: I'm slightly amazed that Maxim manages to make 8-to-1 work, because I'd always heard that going beyond 6-to-1 was pushing the envelope.

If you want to control 1000 loads, you're going to need wither very careful planning of which loads can't be on simultaneously, or 1000 latches.


So far I'm off to a good start with the above very useful points raised here. Capt., thanks for the homework...that's 105 pages I must finish reading today ; :'( ;D but I,m sure I'll learn a lot from it. Thanks.

On the 4017 issue, the reason I chose that is because of having 10 pins Vs. the 8 of the 595 and since using the Mega, I would have only needed 32 of them. My thoughts were those 4017 pins can be left high per se and won't need to fiddle with them anymore and then the 32 pins of the Mega will be much more user friendlier to work with, or NOT? These are just my noob-ish imaginations and have no real science behind this, so please shed light on it.

Ran, Thank you for bringing up this VERY valid point of my confusing the Multiplexing with simply turning components off/on. How about if you were to utilize this for only those components that would lend themselves to PWM? Still a problem?

Also, you mention the "1000 latches", please explain a bit more. I understood that latches can be used with like 4017 to pick the chip that would receive the commands??? It would also help if you could recommend some good readz on the Latch topic.

thank you all

You can not possibly use 4017 for this project

The 4017 is a decade counter, only one of the outputs will be high at any time.

You should use shiftregisters, and possibly the kind that can handle (relatively) high current loads.

Mike, Thank you for the advice. Since Optoisolators are being used on the 5V side and the other components connected to 24v on the other(isolated) side of the OK and the shift registers will be used with the Opto's, do we still need high current SR's? If so is it because of times when multiple Opto's need to be turned on?


p.s. is 595 a high current SR?

In doing project3 page 32 of the LED lights are extremely dim utilizing 3x200 Ohm Resistors as well as when using 3x100 Ohms R's! Any thoughts please?


p.s. MODIFIED, please disregard, the problem was I had connected to Aref rather than the Ground :-[

Are you sure you are running exactly the same code as in the booklet, in particular, are you setting the pinMode of the pins connected to the LEDs to OUTPUT?

You can test the LEDs by connecting them to the +5V through the 200 ohm resistor with the other end of the led connected to ground.

If they are still dim your problem is with either the resistors( double check they really are 200 ohms) or the LEDs

mem, Thanks for your responce, I found the problem: The problem was I had connected to Aref rather than the Ground :-[

The problem was I had connected to Aref rather than the Ground

don’t feel bad, I expect many of us have done that at one time or another.

Can I have some Guru feed back on 4510,s please? What does this mean?: "Joining, or cascading, counters allows you to count from 0-99 (two counter stages), 0-999 (three counter stages), and so on."

There are many shiftregisters with 595 in the name :-)

HEF4794 is a combination of a shiftregiste and LED driver

The 4510 seems to be a perfect choice but with very little info available on it! Can someone to please explain it's function in layman terms?


but with very little info available on it

?? :-? That web page you linked to was excellent in how it described the device. I am puzzled as to what you didn't understand. Can you be a bit more specific.