Arduino Uno is limited to 32x16 pixels, single-buffered.
Bring a little bit of Times Square into your home with our RGB LED matrix panels. These panels are normally used to make video walls — here in New York we see them on the sides of buses and on bus stops — to display animations or short video clips. We thought they looked really cool so we picked up a few boxes from the factory. One has 512 bright RGB LEDs arranged in a 16x32 grid on the front, the other has 1024 LEDs in a 32x32 grid. On the back is a PCB with IDC connectors (one set for input, one for output: in theory you can chain these together) and 12 16-bit latches that allow you to drive the display with a 1:8 (16x32) or 1:16 (32x32) scan rate.
The following boards are plug-and-play ready with the RGB Matrix Shield and software mentioned in this guide:
- Adafruit Metro M0
- Arduino Zero
- Arduino Uno (or compatible ATmega328P boards) — limited to 32x16 matrix, no double-buffering (needed for flicker-free animation)
The following are supported by the software, but require additional wiring or jumpers to use the RGB Matrix Shield:
- Arduino Mega (or compatible ATmega2560 boards)
- Adafruit Metro M4
The following are NOT supported by the software or shield:
- Arduino Leonardo (or compatible ATmega32U4 boards) (though the same form factor, the Uno and Leonardo route different shield connections to the microcontroller)
- Netduino and other Arduino-alikes not mentioned in above lists (but other libraries or shields might exist elsewhere)
- Teensy (but see the SmartLED Shields and software for Teensy 3.X and 4.X, which provide excellent performance)
- Raspberry Pi (but there are different Bonnets and HATs for this)
The software support for driving the RGB matrix panels has evolved with time and the availability of newer, more powerful Arduino boards. There are currently two different Arduino libraries. Which library to use depends on the Arduino board being used.
- RGB matrix Panel - This is the older, original library and is covered later in this guide. Use this library with an Arduino UNO or Arduino Mega.
- Adafruit Protomatter - This is a newer library covered in a separate guide. Use this library with an Arduino Zero, Metro M0, Metro M4, RP2040 based board, ESP32 based board, or other supported 32bit boards. See the Protomatter guide for more details.
These panels require 12 or 13 digital pins (6 bit data, 6 or 7 bit control) and a good 5V power supply, at least a couple amps per panel. We suggest our 2A (or larger) regulated 5V adapters and either a terminal block DC jack, or solder a jack from our DC extension cord. Please read the rest of our tutorial for more details!
Keep in mind that these displays are normally designed to be driven by FPGAs or other high speed processors; they do not have built in PWM control of any kind. Instead, you're supposed to redraw the screen over and over to 'manually' PWM the whole thing. On a 16 MHz Arduino, we managed to squeeze 12-bit color (4096 colors) but this display would really shine if driven by an FPGA, CPLD, Propeller, XMOS or other high speed multi-processor controller.
Of course, we wouldn't leave you with a datasheet and a "good luck!" We have a full wiring diagrams and working Arduino library code with examples from drawing pixels, lines, rectangles, circles and text. You'll get your color blasting within the hour! On most Arduino-compatible boards, you'll need 12 digital pins, and about 800 bytes of RAM to hold the 12-bit color image (double that for the 32x32 matrix, double again for smooth double-buffered animation).