[SOLVED] How should I arrange 4 panels and will they work?

Hello !

I am curios to know how should I place four 64x32 panels in order to get 128x64 resolution.

Should they come in a U shape, with the bottom two panels upside down ?

Or should they all be facing the same way up ?

Also I guess that the ESP connects to one of the panel’s IN Hub75 and then I connect OUT to IN for the remaining panels, correct ?

What about the mapping. How should I count the leds ?
If I arrange the panels in an U shape will I also have to count upside down ?

or this ?

The ESP port only supports Z-shaped chaining (all facing the same way up).


The SmartMatrix Library takes care of the counting, you just address the pixels in the [128, 64] coordinate space

Which panel should connect to ESP, the one on the top layer ?

Z shape means:

1 2
3 4
   1[IN   OUT] -> 2[IN   OUT]->
-> 3[IN   OUT] -> 4[IN   OUT]

This means that I will need a long ass ribbon to connect the second panel’s OUT to the third panel’s IN

Default is top panel is connected to the ESP, but you can set an option in the sketch for SMARTMATRIX_OPTIONS_BOTTOM_TO_TOP_STACKING


So it doesn’t matter if it’s upside down or not, I count the red LEDs from left to right 0 to 127 and from top to bottom 0 to 64, yes ?

Also, I will need 2 long ass ribbons, because of the IN/OUT sockets.

They come like this:

Looking at the panels from the front (facing the actual LEDs):

(1) OUT IN          (2) OUT IN
(3) OUT IN          (4) OUT IN

I need very long ribbons from 1 OUT to 2 IN and from 3 OUT to 4 IN and that sucks :))

Sooo, I’ve finally done the wiring and finished with the mapping, but the resulting map doesn’t work. I went and done the mapping again and it had the same result. I have done this before and it’s the first map that isn’t working properly.

I’ve done the mapping with this:

const uint16_t kMatrixWidth = 512; // 128x64/16
const uint8_t kMatrixHeight = 16; // 1/8 scan
const uint8_t kPanelType = SMARTMATRIX_HUB75_16ROW_MOD8SCAN;
const uint8_t kRefreshDepth = 24;
const uint8_t kDmaBufferRows = 2;
const uint8_t kMatrixOptions = (SMARTMATRIX_OPTIONS_NONE);
const uint8_t kBackgroundLayerOptions = (SM_BACKGROUND_OPTIONS_NONE);

And this is the result:

const PanelMappingEntry panelMapP5_2727_128x64[] = {

buuut it does not work.

The last 16 rows behave strangely:

  • they are a whitish-greenish color;
  • they all flash up whenever 1 led from the first 16 top rows lights up;
  • through the flashes they also do the same thing as the first rows: so they go from left to right, from 0 to 127, the whole width.

So I basically have obtained two 16 rows identical behaviors with the sole difference that one of them flashes and doesn’t have the right colors.

MODE_MAP_TESTING actually goes from left to right 128 LEDs, but it goes only the first 16 rows from top to bottom all the while the last 16 rows are flashing. Then, after a while, it continues from row 16 until it “walks” the whole 128x64 display. The flashing never stops, and the last 16 rows leds still remain the wrong color.


Does this mean that it can’t be done ?

Sorry, I’m not sure. Your project is using the newest code on the alpha ESP32 port, and pushing the limits of it with the number of pixels. There’s quite a few things that could be going wrong, and I’m not sure where to suggest you look from what you described. Sorry.

This was a good test. I needed to know what was the limit of the ESP32.

I am just assuming that it runs out of RAM memory. I will be switching to a Raspberry Pi 4.

Thank you !