MAX7219/22 Library for 8x8 LED Matrix or Digit Displays

I just finished porting Eberhard Fahle’s LedControl library for controlling the MAX7219/MAX7221 with an 8x8 LED Matrix or 7-Segment displays. The port was very minor. The wiring was the ‘fun’ part. Spend the extra bucks and buy one of the backpacks!

It is registered as a library in the IDE and can also be found here:


Cool! But the MAX7219 are kinda pricey :stuck_out_tongue:

NIce work!

There are also ports of the Adafruit libraries for this part. I have been using one of those for some time on my 7-segment LED clock “Time and Temp” project.

1 Like

It is and it isn’t… Adafruit charges $10, Sparkfun charges $6 for a chip but $10 for a whole kit with the 8x8 LED and chip. Then all kinds of crazy prices on ebay.


I saw that. Was wishing I went for one of the backpacks and the i2c version as well. Still… fun was had. Getting ready to do a little POC where I use my .Net library to push messages to the display from an Azure website. Stay tuned!

1 Like

Looks good. How did you handle the serial line levels? I thought the MAX7219 required 5v logic levels, but the Spark Core only output at 3.3? I can’t tell for sure in the video, but it doesn’t look like there are any transistors in the circuit.

There are several threads that deal with the 5V vs. 3V3 thing.

But for this case if communication only goes from Core to 5V device the Cores HIGH is most likely seen as HIGH on the other end too.
(HIGH threshold 5V / 2 + 10%)
If you want to receive data you may also get away with the 5V tolerant pins (D0, D1, D3, D4, D5, D6 and D7) and SoftSPI and/or Serial2 (on D0/D1).

But level shifting would always be the safer bet.

@good_ham That was my concern to, but it worked. In reviewing the specs, Input High Voltage is a min of 3.5V. The chip says max V is 6V. So it appears it should not work. Had a logic level shifter on standby but it wasn’t necessary. I may wire it in just to be sure it won’t just stop working one day.