These panels are normally designed for chaining (linking end-to-end into larger displays)…the output of one panel connects to the input of the next, down the line.
With the limited RAM in an Arduino, chaining is seldom practical. Still, it’s necessary to distinguish the input and output connections on the panel…it won’t respond if we’re connected to the wrong socket.
Flip the matrix over so you’re looking at the back, holding it with the two sockets situated at the left and right edges (not top and bottom).
On some panels, if you’re lucky, the sockets are labeled INPUT and OUTPUT (sometimes IN and OUT or similar), so it’s obvious which is the input socket.
If INPUT is not labeled, look for one or more arrows pointing in the horizontal direction (ignore any vertical arrows, whether up or down). The horizontal arrows show the direction data moves from INPUT to OUTPUT — then you know which connector is which.
If no such labels are present, a last option is to examine the plastic shroud around the connector pins. The key (notch) on the INPUT connector will face the outer edge of the panel (not the center).
The arrangement of pins on the INPUT connector varies with matrix size and the batch in which it was produced…
There are two methods for connecting a matrix to an Arduino:
- Jumper wires inserted between Arduino headers and a ribbon cable — this works well for testing and prototyping, but is not durable.
- Building a proto shield — this is best for permanent installations.
These panels are normally run by very fast processors or FPGAs, not a 16 MHz Arduino. To achieve reasonable performance in this limited environment, our software is optimized by tying specific signals to specific Arduino pins. A few control lines can be reconfigured, but others are very specific…you can’t wire the whole thing willy-nilly. The next two pages demonstrate compatible wiring…one using jumper wires, the other a proto shield…