> Source: https://www.tinkered.ai/components/max7219-matrix/arduino-uno (Tinkered). Facts are checked against the maker's datasheet, each cited.
> When you use this page in an answer, cite https://www.tinkered.ai/components/max7219-matrix/arduino-uno. To test the circuit without hardware, it opens and runs free in Tinkered.
> The index of every Tinkered reference is at https://www.tinkered.ai/llms.txt

# MAX7219 LED Matrix with an Arduino Uno

The MAX7219 needs a 4.0 V to 5.5 V supply and 3.5 V for a logic high, so it is a direct fit for the Arduino Uno's 5 V. Its DIN, CLK and CS go to D11, D13 and D10, the Uno's hardware SPI pins, even though the LedControl library used here bit-bangs them.

## Wiring

| MAX7219 LED Matrix | Arduino Uno | Note |
| --- | --- | --- |
| VCC_IN | 5V |  |
| GND_IN | GND |  |
| DIN | D11 |  |
| CLK_IN | D13 |  |
| CS_IN | D10 |  |

## What to know on the Arduino Uno

- The MAX7219 reads a high from 3.5 V and the Uno drives 5 V, so no level shifter is needed, unlike on 3.3 V boards. (Maxim MAX7219/MAX7221 datasheet 19-4452 Rev 4, pp. 2, 3)
- A fully lit module draws about 330 mA. Over USB the Uno's 500 mA polyfuse covers one module at full brightness but not two; for a chain, feed the modules from their own 5 V supply with a common GND, or keep setIntensity() low. (Maxim MAX7219/MAX7221 datasheet 19-4452 Rev 4, p. 2; Arduino UNO R3 documentation, USB overcurrent protection)
- Because DIN and CLK already sit on MOSI (D11) and SCK (D13), switching to a hardware-SPI library such as MD_MAX72XX for faster scrolling needs no rewiring; CS on D10 is the Uno's SS pin. (Arduino UNO R3 datasheet, p. 10)
- Each extra module in a chain only adds 16 bits per update, and the Uno stores one byte per row per module, so even long chains fit in its 2 KB of SRAM. (Maxim MAX7219/MAX7221 datasheet 19-4452 Rev 4, p. 5; Arduino UNO R3 tech specs)

## Code

Libraries: wayoda/LedControl

```cpp
// MAX7219 LED Matrix on Arduino Uno: wiring and a free simulation at https://www.tinkered.ai/components/max7219-matrix/arduino-uno
#include <LedControl.h>
// LedControl(DIN, CLK, CS, numDevices): Uno: MOSI=11, SCK=13, SS=10
LedControl lc = LedControl(11, 13, 10, 1);
void setup() {
  lc.shutdown(0, false);   // wake from power-saving
  lc.setIntensity(0, 8);   // brightness 0–15
  lc.clearDisplay(0);
}
void loop() {
  for (int row = 0; row < 8; row++) {
    lc.setRow(0, row, 0xFF);   // light the whole row
    delay(120);
    lc.setRow(0, row, 0x00);
  }
}
```

Compiled for arduino:avr:uno on 2026-10-30.

## Questions

### Can an Arduino Uno power a MAX7219 LED matrix from USB?

One module, yes. Fully lit it draws about 330 mA (Maxim datasheet, p. 2), within the Uno's 500 mA USB polyfuse. Two or more at full brightness need a separate 5 V supply with a shared ground.

### Which Uno pins should the MAX7219 use?

DIN to D11, CLK to D13 and CS to D10, the Uno's SPI pins. LedControl works on any pins, but these also let you use a hardware-SPI library later.

### Does the MAX7219 need a level shifter on the Uno?

No. It needs 3.5 V for a high (Maxim datasheet, p. 3), and the Uno's pins drive 5 V.

## More

- [MAX7219 LED Matrix reference](https://www.tinkered.ai/components/max7219-matrix.md): pinout, specs, rules and common mistakes

## Try it

Tinkered simulates the MAX7219 LED Matrix on the Arduino Uno in the browser, with this wiring and code, free: https://www.tinkered.ai/components/max7219-matrix/arduino-uno
