De-interleaving multiplex array rows and columns

My current project is no going to be addressing a traditional matrix grid of LEDs in one central space. They are going to be physically distributed apart from the board, so I've been looking at how to wire these up and connect every thing together.

Given COL[1..8] and ROW[1..8], what is the easiest way to turn this into (COL[1], ROW[1]) (COL[1], ROW[2]), etc, etc so that I can take the lines or anode/cathode pairs of the board in a, in my case, 2x8 header and take them away.

In order to do this in stripboard, I'll need 8 COL and 8 ROW running the length of the board with jumper links in for every column entry (I'm working common row in the headers) for every header and this just seems overly complicated.

I sat there for an hour or so in eagle, trying to see if I could route it through a 2-sides PCB, but I couldn't see a neat way to do it.

Is there something obvious and poetically simple that I'm missing? How do the pros do it on bigger boards?


PS. I've got a schematic that explains this better - I'll try and upload that shortly.

With the promised schematic.


How do the pros do it on bigger boards?

They use four layer boards. In bulk these are nearly as cheap as two layer ones.
Sorry but that doesn’t help you much.
Use vias to change the side of the board you are routing on, but you will use lots of them.

Grumpy_Mike: Sorry but that doesn't help you much. Use vias to change the side of the board you are routing on, but you will use lots of them.

It helps me know that there isn't a more elegant solution embarrassingly staring me in the face. Thanks for the help, Mike.

I think that a piece of stripboard with 56 links is going to be the easiest way for a one-off and, while I'm about it, I'll work out how to place vias in eagle as well.


Vias in eagle is easy - draw your traces as segments that can selected separately - for instance, instead of a 2" line, make 4 1/2" segments. Then right click a segment and change its layer from top to bottom, vias will be added at the ends.

Haha, sorry Crossroads - wasn't asking the question, more thinking out loud. I haven't tried it yet, but posts (actually on the arduino forums) were saying that if you middle click (of left-right click) mid route placement it will prompt you which layer you want to switch to.

(Trying to get my head around the way the eagle interface works is like trying to sieve my brain)


So, as an intellectual exercise (aka I don’t think I’m going to actually make this) I hand routed the above schematic.

I worked through using the sparkfun DRC config and tried to get everything as compressed as possible. It still seems to take up an extraordinary amount of PCB space (it only just fits in the boardsize allowed by the freeware eagle version).

Any helpful comments or feedback about my first attempt with eagle? Could I get away with smaller track sizes/separation/vias without comprimising too much?


matrix.brd (22 KB)

Well done. You could get the connectors closer together if you moved half the holes to the top of the connectors. That way they wouldn't spread out like that. You can also use much smaller vias, more of the same order as the tracks.

Thanks Mike.

You could get the connectors closer together if you moved half the holes to the top of the connectors. That way they wouldn’t spread out like that.

Good point, I’ll give that a go.

You can also use much smaller vias, more of the same order as the tracks.

That would help a lot as the via size is the limiting factor on both the separation of the outbound connectors and the track separation on the 8-wide-left-to-right-run. I’ll try reducing their size.

The one thing that I couldn’t get Eagle to do was to let me put a via in the middle of a track to create a T-junction (with a straight track on one side of the board with the tail of the T on the other side, meeting at the via). On the face of it, I can’t see why it would not be possible to manufacture this kind of junction so how can I persuade eagle to do it?


"so how can I persuade eagle to do it?" See reply #4. There is also a symbol that looks like a mini-bow & arrow, with that selected, click your trace once & don't drag anything. Then selec the crossed arrows, and go back to reply #4.

You can also run traces between the pads of pins on each connector to make things smaller. Use octogan vias with 0.012" drill size, lets you bring vias closer.

Thanks you all of your help, I’ve got this board down from 100mm by 80mm to 60mm by 37mm! That’s an awesome saving.

I’ve split the 8 way column bus into two buses four wide down either side, removed some unnecessary vias, rerouted to increase the clearance distance between vias, added standoff holes and a silkscreen. I’ve even moved over to 45 degree tracks too, mostly because it looks spiffing, but does it have any electrical benefit?

The vias in eagle are still a right royal PITA - so often it seems to decide that i shouldn’t place the via where I want to and it gives me a great big yellow X in the airwires, but I’ve got workarounds now for whenever that happens. I say workaround, what I really mean is I mash the “redraw airwires” button in frustration and sometimes it even works.


matrix.brd (21.8 KB)

Ok, now that you're getting the hang of it: I am sure you could take the majority of your blue traces and instead going around the outside of the pins and diving in, you could them straight across the board between pins with a little spur if you will to the pin next to it. Then run a red trace down each of the left hand colmn of pins from the top as you have now. Or vice versa - you have red down each column, leave those there and run red traces across the board.

Thanks Cross, I’ve just run the columns straight down the middle, between the header pads.

I had consciously decided not to go this route originally, because I was skeptical about the clearance between the pads for the headers and also about the accuracy of the solder mask covering the track completely while exposing the pads.

Am I wrong to think this?


All valid concerns - but you can actually get 2 traces between 0.1" spaced pads, so just 1 will have sufficient clearance.