Skip to content

dim horizontal Ghosting on half display #845

@FishyFix

Description

@FishyFix

I've been debugging my LED matrix project for quite some time, but I'm stuck on a persistent ghosting issue.

The matrix generally displays the intended content (yay!), but there's noticeable ghosting—especially visible when displaying a single pixel (see attached photo). The ghosting appears at a much lower brightness than the active pixel and occurs only in the same column, and only on one half of the display (the half where the pixel is located). I haven’t found anyone online describing this exact behavior.

Any ideas on what else I could try? I'd really appreciate any insights or suggestions!

Image
Image

Things I've tried:

  • Swapping in a different matrix of the same type
  • Increasing latch blanking
  • Inverting OE signal
  • decreasing clk speed
  • turning off clk phase
  • Rewiring ground connections

Project Details:

Board: ESP32-S2

LED Matrix: Adafruit 32x16 RGB LED Matrix

Wiring: Short (~5 cm) soldered wires connected to pin header for flatband cable

Library: ESP32-HUB75-MatrixPanel-I2S-DMA

Supply: GeeekPi Raspberry Pi 4 20W 5V 4A Power Supply and issue persists when powered via USB from PC

Test Code:

#include "ESP32-HUB75-MatrixPanel-I2S-DMA.h"
#include <stdlib.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"

#define R1_PIN 4
#define G1_PIN 5
#define B1_PIN 18
#define R2_PIN 19
#define G2_PIN 21
#define B2_PIN 22
#define A_PIN 23
#define B_PIN 33
#define C_PIN 15
#define D_PIN -1
#define E_PIN -1 
#define LAT_PIN 25
#define OE_PIN 13
#define CLK_PIN 26  

#define PANEL_RES_X 32      // Number of pixels wide of each INDIVIDUAL panel module. 
#define PANEL_RES_Y 16     // Number of pixels tall of each INDIVIDUAL panel module.
#define PANEL_CHAIN 1      // Total number of panels chained one to another

MatrixPanel_I2S_DMA *dma_display = nullptr;

uint16_t myWHITE, myRED, myGREEN, myBLUE;

static const char *TAG = "RGB_TEST";

extern "C" void app_main() {
  HUB75_I2S_CFG::i2s_pins _pins={R1_PIN, G1_PIN, B1_PIN, R2_PIN, G2_PIN, B2_PIN, A_PIN, B_PIN, C_PIN, D_PIN, E_PIN, LAT_PIN, OE_PIN, CLK_PIN};
  HUB75_I2S_CFG mxconfig(
    PANEL_RES_X,   // module width
    PANEL_RES_Y,   // module height
    PANEL_CHAIN,    // Chain length
    _pins // pin mapping
  );

  // mxconfig.latch_blanking = 4;
  // mxconfig.i2sspeed = HUB75_I2S_CFG::HZ_20M;
  // mxconfig.driver = HUB75_I2S_CFG::SHIFTREG;
  // mxconfig.clkphase = false;
  // mxconfig.double_buff = true;
  // mxconfig.min_refresh_rate = 120;

  dma_display = new MatrixPanel_I2S_DMA(mxconfig);
  dma_display->begin();
  dma_display->setBrightness8(50); // 50 is currently max
  dma_display->clearScreen();
  
  myWHITE = dma_display->color565(255, 255, 255);
  
  dma_display->clearScreen();
  
  dma_display->drawPixel(16, 8, myWHITE);

  dma_display->drawPixel(7, 5, myWHITE);
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions