Skip to content
ESP32 Arduino library for the P3 64x32 RGB matrix panels
Branch: master
Clone or download
Latest commit 0e98344 Aug 24, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples Update Aug 24, 2019
LICENSE.txt initial commit May 1, 2018
P3RGB64x32MatrixPanel.cpp Don't wrap overflown pixels Oct 31, 2018
P3RGB64x32MatrixPanel.h Add stop() to disable timer Oct 31, 2018 Update Apr 1, 2019 initial commit May 1, 2018

P3RGB64x32MatrixPanel library for ESP32

ESP32 Arduino library for P3 64x32 RGB LED Matrix Panel.

The panel is available at:

DEMO (Click to play the video)

This software is released under the MIT License, see LICENSE.txt.


To download, click the "Download ZIP" button, and specify the zip file from the "Sketch > Include Library > Add .ZIP Library" menu in the Arduino IDE.

You also need to install Adafruit_GFX_Library from the "Library > Manage Libraries" menu.

Patching GPIO to avoid eratta of ESP32

You should patch the tools/sdk/ld/esp32.peripherals.ld to avoid random pixel noise on the display as following:

/* PROVIDE ( GPIO = 0x3ff44000 ); */
PROVIDE ( GPIO = 0x60004000 );

Please refer section 3.3. in for more details.

Wiring ESP32 with the LED Matrix Panel

The panel has HUB75 compatible pins. The library provides two constructors. One with default pin wiring like:

+---------+   Panel - ESP32 pins
|  R1 G1  |    R1   - IO25      G1   - IO26
|  B1 GND |    B1   - IO27      GND  - GND
|  R2 G2  |    R2   - IO21      G2   - IO22
|  B2 GND |    B2   - IO23      GND  - GND
|   A B   |    A    - IO12      B    - IO16
|   C D   |    C    - IO17      D    - IO18
| CLK LAT |    CLK  - IO15      LAT  - IO32
|  OE GND |    OE   - IO33      GND  - GND

The second constructor takes each single pin as argument so that yo umay customize the pin wiring, but the pins for LAT and OE must be assigned to IO32 or larger, and other pins must use IO1-31. Note that IO only for INPUT or ocuppied by other peripheral devices cannot be used.

The panel must be powered by 5V AC adapter with enough current capacity. (Current varies due to how many LED are turned on at the same time. To drive all the LEDs, you need 5V4A adapter.)


Please check the examples directory for sample programs.

Note that this library heavily use the timer interrupt to drive LED matrix to enable software based 5bit PWM for each line. This may conflict with WiFi setup, so you should start WiFi before matrix.begin() which sets up timer interrupts.

You can’t perform that action at this time.