One more panel type (only A and B lines)

I’ve bought several panels and try to make them work with ESP32. Maybe someone has seen something similar and have got them to work? When using SMARTMATRIX_HUB75_16ROW_32COL_MOD2SCAN it looks like it is working, but when you set pixel in any even row, the next pixel on odd row lights up too (for example if I turn on pixel at (0, 0), two pixels turn on: (0, 0) and (0, 1) ). When setting pixels on odd rows, everything’s ok.
According to silkscreen connector has only A and B lines.
Any help appreciated!

What are the dimensions of the panel?

32x16, and I have connected two of them (so 64x16 finally).

PS. Btw, if you press on the image, it’s tall, I have merged 3 photos together as forum doesn’t let me upload more than one attachment :slight_smile:

A couple possibilities:

  • The mapping for your panel is different from SMARTMATRIX_HUB75_16ROW_32COL_MOD2SCAN
  • There’s a bug in the multi row panel mapping feature

Can you run the MultiRowRefreshMapping example and follow the instructions for setting up a new panel mapping? If the instructions are too difficult, just run the sketch as is (the default settings are for reverse engineering the panel size you have), record a video of at a minimum the red color pixel going across the first lines, and put it somewhere I can see and try to help further

Here is a video. Panels are connected physically, but I’ve disconnected cable so only one of them is actually working.

I’m using branch compatible with esp32 (called teensyvlc or somethin glike that :)).
Settings:

#if (SKETCH_MODE == MODE_MAP_REVERSE_ENGINEERING)
const uint8_t kMatrixWidth = 128;        // known working: 16, 32, 48, 64
const uint8_t kMatrixHeight = 4;       // known working: 32, 64, 96, 128
const uint8_t kPanelType = SMARTMATRIX_HUB75_4ROW_MOD2SCAN;   // Use this to reverse engineer mapping for a MOD2 panel
//const uint8_t kPanelType = SMARTMATRIX_HUB75_8ROW_MOD4SCAN;   // Use this to reverse engineer mapping for a MOD4 panel
#endif

Strange thing is that every second color lits two leds at the same time. I can write mapping, but given the fact that two leds are lit instead of one, I’m not sure if that will help.

PS. Thank you a lot for helping!

hmm, I didn’t get a email alert for this new post, but went to the message board and saw it…

Have you noticed that not all the pixels are being lit when the pixels are doubled up, only 7/8 pixels per group turn on the panel moves to the next group.

I’m not sure what’s going on here, but I did just find that I set the polarity of the CLK signal from the ESP32 the wrong way. Let’s see what happens if it’s changed:

Open this file in the library:
src/esp32_i2s_parallel.c

Add this code after gpio_setup_out():

static void gpio_setup_out_invert(int gpio, int sig) {
    if (gpio==-1) return;
    PIN_FUNC_SELECT(GPIO_PIN_MUX_REG[gpio], PIN_FUNC_GPIO);
    gpio_set_direction(gpio, GPIO_MODE_DEF_OUTPUT);
    gpio_matrix_out(gpio, sig, true, false);
}

Replace this line:

    gpio_setup_out(cfg->gpio_clk, sig_clk);

with these lines:

    // invert CLK output to clock out data on rising edge
    gpio_setup_out_invert(cfg->gpio_clk, sig_clk);

Let’s see if that helps at all

I just pushed this change to GitHub, you can get it from there instead:

Now it doesn’t work at all. On every restart shows random square in blue color and nothing changes.

Does it work if you roll back the changes? If you pulled the latest from github, I pushed two commits, the second having to do with removing timer code may have broke something.

After reverting this commit first half of the time nothing works and pixels start lighting only beginning with purple. But still two of them glow at the same time :frowning:

Strange, better revert them both.

What ESP32 circuit are you using? GPIOPINOUT == ESP32_FORUM_PINOUT? Are you using level shifters?

Yes:

#ifndef GPIOPINOUT
#define GPIOPINOUT ESP32_FORUM_PINOUT
#endif

No level shifters, everything’s connected straight to esp32.

Any ideas what more can I do?

I’m sorry, I’m out of ideas. Either the panel is defective, or it’s a type that I haven’t seen before and don’t know how to drive. I wish I could be of more help.

I guess another possibility is there’s a wiring issue, or level shifting issue on the address lineS. It seems like every other address is writing pixel data across two addresses