Help! Can't possibly get LED matrix to work

Hi everyone,

last few weeks I have been off and on trying to get a 64x32 LED matrix to work. I bought one off of AliExpress ( 64x32 matrix LED sign RGB P4 led module video wall P2.5 P3 P4 P5 P6 P8 P10 indoor screen full color display|full color led display|led displaycolor led display - AliExpress ) and tried hooking it up to an ESP32 following this video https://youtu.be/YvU_ZfF7vs4 and using this library GitHub - 2dom/PxMatrix: Adafruit GFX compatible graphics driver for LED matrix panels

My first results were okay, it flickered and didnt show any readable text but I was happy and gave up for the night. When continuing the next morning I couldn’t get anything to work. A week after I got something to work with https://github.com/mrfaptastic/ESP32-RGB64x32MatrixPanel-I2S-DMA this library. The only real difference in wiring is that this library doesn’t use the chaining unlike the PxMatrix library. I tried the PxMatrix library again since I find it’s code easier to work with but ever since havent been able to get any response from my display. Its all just black.

During every step I used a multimeter to check continuity to make sure I did not make wiring mistakes

Can anyone help me out troubleshooting and debugging my screen? I have tried dupont wires, soldering everything to pinheaders and using those, all sorts of things.

EDIT: Here is an imgur with some pictures of my current attempt: Help me troubleshoot this display please - Album on Imgur
Its just dupont cables without the chaining hooked up in the attempt to get any response from the display.

EDIT2: Here is an imgur link with some images of wiring schematics

The code that I run is the pixeltime example included in the library, i adjusted four lines to accommodate my display (line 23, 24, 31, 88)

#include <PxMatrix.h>

// Pins for LED MATRIX
#define P_LAT 22
#define P_A 19
#define P_B 23
#define P_C 18
#define P_D 5
#define P_E 15
#define P_OE 16
hw_timer_t * timer = NULL;
portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED;

#define matrix_width 64
#define matrix_height 32

// This defines the 'on' time of the display is us. The larger this number,
// the brighter the display. If too large the ESP will crash
uint8_t display_draw_time=10; //30-70 is usually fine

//PxMATRIX display(32,16,P_LAT, P_OE,P_A,P_B,P_C);
PxMATRIX display(64,32,P_LAT, P_OE,P_A,P_B,P_C,P_D);
//PxMATRIX display(64,64,P_LAT, P_OE,P_A,P_B,P_C,P_D,P_E);

// Some standard colors
uint16_t myRED = display.color565(255, 0, 0);
uint16_t myGREEN = display.color565(0, 255, 0);
uint16_t myBLUE = display.color565(0, 0, 255);
uint16_t myWHITE = display.color565(255, 255, 255);
uint16_t myYELLOW = display.color565(255, 255, 0);
uint16_t myCYAN = display.color565(0, 255, 255);
uint16_t myMAGENTA = display.color565(255, 0, 255);
uint16_t myBLACK = display.color565(0, 0, 0);

uint16_t myCOLORS[8]={myRED,myGREEN,myBLUE,myWHITE,myYELLOW,myCYAN,myMAGENTA,myBLACK};

uint8_t static weather_icons[]={0x00};

void IRAM_ATTR display_updater(){
  // Increment the counter and set the time of ISR
  portENTER_CRITICAL_ISR(&timerMux);
  display.display(display_draw_time);
  portEXIT_CRITICAL_ISR(&timerMux);
}


void display_update_enable(bool is_enable)
{
  if (is_enable)
  {
    timer = timerBegin(0, 80, true);
    timerAttachInterrupt(timer, &display_updater, true);
    timerAlarmWrite(timer, 4000, true);
    timerAlarmEnable(timer);
  }
  else
  {
    timerDetachInterrupt(timer);
    timerAlarmDisable(timer);
  }
}



void setup() {

 Serial.begin(9600);
  // Define your display layout here, e.g. 1/8 step, and optional SPI pins begin(row_pattern, CLK, MOSI, MISO, SS)
  display.begin(16);
  //display.begin(8, 14, 13, 12, 4);

  display.clearDisplay();
  display.setTextColor(myCYAN);
  display.setCursor(2,0);
  display.print("Pixel");
  display.setTextColor(myMAGENTA);
  display.setCursor(2,8);
  display.print("Time");
  display_update_enable(true);

  delay(3000);

}
union single_double{
  uint8_t two[2];
  uint16_t one;
} this_single_double;

// This draws the weather icons
void draw_weather_icon (uint8_t icon)
{
  if (icon>10)
  icon=10;
  for (int yy=0; yy<10;yy++)
  {
    for (int xx=0; xx<10;xx++)
    {
      uint16_t byte_pos=(xx+icon*10)*2+yy*220;
      this_single_double.two[1]=weather_icons[byte_pos];
      this_single_double.two[0]=weather_icons[byte_pos+1];
      display.drawPixel(1+xx,yy,this_single_double.one);
    }
  }
}

unsigned long last_draw=0;
void scroll_text(uint8_t ypos, unsigned long scroll_delay, String text, uint8_t colorR, uint8_t colorG, uint8_t colorB)
{
    uint16_t text_length = text.length();
    display.setTextWrap(false);  // we don't wrap text so it scrolls nicely
    display.setTextSize(1);
    display.setRotation(0);
    display.setTextColor(display.color565(colorR,colorG,colorB));

    // Asuming 5 pixel average character width
    for (int xpos=matrix_width; xpos>-(matrix_width+text_length*5); xpos--)
    {
      display.setTextColor(display.color565(colorR,colorG,colorB));
      display.clearDisplay();
      display.setCursor(xpos,ypos);
      display.println(text);
      delay(scroll_delay);
      yield();

      // This might smooth the transition a bit if we go slow
      // display.setTextColor(display.color565(colorR/4,colorG/4,colorB/4));
      // display.setCursor(xpos-1,ypos);
      // display.println(text);

      delay(scroll_delay/5);
      yield();

    }
}

uint8_t icon_index=0;
void loop() {
  scroll_text(1,50,"Welcome to PxMatrix!",96,96,250);
  display.clearDisplay();

  draw_weather_icon(icon_index);
  icon_index++;
  if (icon_index>10)
    icon_index=0;

  for (int xx=0; xx<16;xx++)
  {
    display.drawLine(xx+16,0,xx+16,5,display.color565(xx*16,0,0));
    display.drawLine(xx+16,6,xx+16,10,display.color565(0,xx*16,0));
    display.drawLine(xx+16,11,xx+16,15,display.color565(0,0,xx*16));
  }
  delay(1000);
  for (uint8_t dimm=255; dimm>0; dimm--)
  {
    display.setBrightness(dimm);
    delay(5);
  }
  for (uint8_t dimm=0; dimm<255; dimm++)
  {
    display.setBrightness(dimm);
    delay(5);
  }

}

PS: I edited the weather_icons variable because it was so large that I exceeded the 9000 character limit of the post

How many LEDs do you have in series, with the 5 volts supply? At 5 volts some colors 2 would not work. Measure the voltage across the LEDs and see if you have enough to turn them on.

Please read the sticky post - Getting the best out of this forum, and post your pictures, schematic and code accordingly.

Many here including me are not going to sit through a video with low information density to just get a glimpse of some schematic.
The link to the matrix you bought doesn’t work.

Gil - good to see that yet again you completely miss the point. This is a matrix module not a collection of individual LEDs that you can measure.

Youre right Mike, I should include more info. I will edit the main post so it’s all together.

Thanks, but did you ever read this:-
How to get the best out of this forum
It explains why we don't like going to external sites for images.

It's just tedious to go to that site and avoid all its clutter. :roll_eyes:

To take photos, please take the stuff outside into bright daylight - but not direct sun - at last 3 Megapixels. Not in a dark room. :astonished:

Thanks for uploading the files directly Paul__B. I did read the 'How to get the best' post ofourse, but while posting this I wrote a very long explanation of all the steps I took with their results, tried uploading the images and got a 404 error and lost my entire post. That got me frustrated so I thought I'll just put it in an imgur, the most well known image hosting site and we're good to go.

In the end its dupont wires connecting pins on an ESP32 with my display. I am not sure what is expected to be found out of those images, that is why I posted my initial question asking for help.

At least everything is posted and in the correct format now, so is there anyone out there who saw this and has any pointers as to what I can try next?

That got me frustrated so I thought I'll just put it in an imgur, the most well known image hosting site and we're good to go.

Well Imgur is the most spam ridden site of the lot. It wants to download all sorts of tracking cookies on your machine.