Go Down

Topic: P10 32x16 LED panel 1/4 scan now works with Adafruit_GFX (Read 9790 times) previous topic - next topic


I used modified library with UNO, Pro mini and Mega

Are you running 1/4 scan RGB panel with Arduino due?


The code worked perfectly for me after debugging some errors in the gamma.h file.

gamma array declaration keyword was diffent from one used on the rgbmatrixpanel.cpp so i modified the gamma.h

See the attached file.


Still dont working :(



i used your modified library, it gives me following error,

C:\Program Files (x86)\Arduino\libraries\RGB-matrix-Panel\RGBmatrixPanel.cpp: In member function 'uint16_t RGBmatrixPanel::Color888(uint8_t, uint8_t, uint8_t, boolean)':

C:\Program Files (x86)\Arduino\libraries\RGB-matrix-Panel\RGBmatrixPanel.cpp:254:22: error: 'gamma' was not declared in this scope

   r = pgm_read_byte(&gamma[r]); // Gamma correction table maps

please help,

change this

&gamma -->  &gamma_table


I've a 32x32 Matrix led without D pin.
I've tried a modified class but not working...
Please help me


I have a P10 with 1/2 scan.
This library didnt work.
Is it possible to adapt? ( i Havnt the "c" pin)
Did you solve the problem? I am having the same issue.




I'm using, with some success, the modified library posted at top

But I need some help to get a 16x16 RGB P10 1/4 scan panel

I started this topic asking help https://forum.arduino.cc/index.php?topic=587781.0

Please any guide is appreciated



Hi guys

Here is a video of what I'm getting now https://youtu.be/m9r9iTQ_H7I

As you can see, the script prints first dot (0,0) at 2nd row, I'm guessing this is about the screen layout

I'm trying to modify the library, as far as I can tell, the part that could control this is about line 376 at RGBmatrixPanel.cpp, where shift variabe is defined

Please , any help ?


Code: [Select]

void setup() {

int pixX = 16;
int pixY = 0;

void loop() {


  matrix.drawPixel(pixX, pixY, matrix.Color333(210, 210, 210));

    if(pixY==16) pixY = 0;



Jan 04, 2019, 07:29 pm Last Edit: Jan 04, 2019, 07:32 pm by GFragostini
Hi all! This is my first post on this forum. I created an account because of this very problem, because I have it, too :)  But it seems that this issue is slightly different with everyone.

I implemented Ruud's original code, but it did not solve my problem. My *outdoor* 32x16 1/4-scan panel seem to work OK by writing on lines 1 and 2 in correct order. Also the led colours work fine. But the panel output is messed up with two ways:
1: a single pixel does not appear as a single pixel, but more like some funny "vertical group of fours" depending on the coordinate I wish to place it.
2: Pixel mapping seems to be weird, too (see the pic). I tried to write: "-----" on the second line in wht/red/grn/blu/wht, but all I got was 4-pixel tall bars in weird order.

My panels have a silkscreen saying: "P10(3535)16X32-4S-M2.1"

I tried gusantor's code and I'm having similarities with the pixel "hopping" with an addition of the multiple vertical pixels (4 minus some) appearing on my panel.

It seems to me, that there is no universal standard as to how to build led displays. But I'm sure there must be a way to control each of them. There just must be - they wouldn't build them in millions in the first place if this was not the case... right? :)

So here's my code:

Code: [Select]
#include <Adafruit_GFX.h>   // Core graphics library
#include <RGBmatrixPanel_1per4.h> // Hardware-specific library (Ruud's version)

#define CLK 8  // MUST be on PORTB! (Use pin 11 on Mega)
#define LAT 10
#define OE  9
#define A   A0
#define B   A1
#define C   A2
#define D   A3
RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false, 1); // 1 = amount of panels
void setup() {

  matrix.setCursor(1, 9);   // next line


void loop() {
  // do nothing

And here's the pic:

Many thanks in advance for your patience and help! :)


It looks like the snake pattern for p10 modules is defunct out of China. I've ordered panels from 4 different manufacturers with HUB75, and none of them work now with this library. It's just not the snake "S" pattern anymore. 1/4 scan is also the default, there are no more 1/8 scan except a few indoor modules.

Someone with enough ability should modify this library and change the pattern, it was a very useful library.


Folks who are getting four pixels vertically instead of a single pixel, I learned a fun fact: They've inverted the addressing logic!

I made a little test project that pushes a single pixel at a time into the A shift register. I first push a green pixel so you can more easily follow it visually. This shows you the snaking pattern that we have to deal with with the P10 32x16 1/4 scan panels now.

Here's a video of pixels being shifted into the A address on my panel.

My addrressing scheme's seems a bit weird based on what I've been reading. The panel works if I hold all address lines high and then sequence through pulling them low when I want to display the lines. Do other panels use a binary encoded addressing scheme?


I have a chrono project running on a Mega 2560 PRO with a 32x16 RGB 1/8S indoor display. This project is working fine.
I have received a couple of 32x16 RGB outdoor 1/4S and my project is not working with this panel.
I have included the RGBmatrixPanel.cpp and RGBmatrixPanel.h from Ruud, but it is still not working.
With a video board, this panel is working fine, panel is not faulty.
On this panel there is a pin D, but I thing that this pin is not used and I have put the pin to GND.
I have loaded a small program to test the display....I try just to write a pixel and a have a vertical line of  dots...
#include <Adafruit_GFX.h>   // Core graphics library
#include <RGBmatrixPanel.h> // Hardware-specific library (Ruud's version)
#define clear()          fillScreen(0)

#define CLK 11  // MUST be on PORTB! (Use pin 11 on Mega)
#define LAT 10
#define OE  9
#define A   A0
#define B   A1
#define C   A2
RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false, 1); // 1 = amount of panels
void setup() {

void loop() {
  for (int i=0;i<32;i++) {
    matrix.drawPixel(i, 0, matrix.Color333(2, 3, 4));

Any idea how to modify the GFX or RGBmatrix library to have this panel working.

Go Up