Everyone likes LEDs. I like when I have a bunch of them. So one day I realised that I have about 15 big 32x16 RGB LED matrices in my lab. They are cheaper versions of Adafruit's led matrixes. Both matrices use standard HUB75 pinout. The pinout is same, LED count is the same, but display doesn't work - it is wired differently inside.
Most simple way to do a led matrix is to drive low side columns with sinking driver chips and rows with high side mosfets. When you have bigger display - let's say 24 driver chips in total, then usually you will make multiple parallel lines of data to clock information faster.
HUB75 is a standard interface to control matrices like that. It has binary inputs for mosfet control: A, B, C and D. So you can have up to 16 rows. Also, you have 6 data buses: R1, G1, B1, R2, G2, B2. Now, to control a matrix you have to know two things: how many virtual rows and columns does your matrix have and how are they mapped with reality.
Differences from device to device
The Adafruit matrix has 12 driver chips and 8 rows controlled by mosfets. Mine have 24 driver chips and 4 rows. Also, Adafruit's one seems to be mapped quite straightforward way. Mine in the other hand.. rows are separated to eight banks that are all in different directions. Still - no problem. Mark Laane, a programmer in my lab, sat down with the matrix and soon we had a working library. You can find it from here:
I soldered my matrices directly to Arduino Micros. Since the pinout is slightly different from Uno, the connection diagram got hurt a bit. This library works with following connections:
|HUB75||Connect to||On Micro|