Skip to content

Support 2 chained/stacked 64x32 DMD Led Panels#84

Open
albpara wants to merge 4 commits into
jnthas:mainfrom
albpara:feature/support-chained-64x32
Open

Support 2 chained/stacked 64x32 DMD Led Panels#84
albpara wants to merge 4 commits into
jnthas:mainfrom
albpara:feature/support-chained-64x32

Conversation

@albpara

@albpara albpara commented Feb 5, 2025

Copy link
Copy Markdown

Note

This is a work in progress, do not review yet

After my frustration for not being capable of using my 64x32 panel to build this amazing clock, I decided to give it a try and make the option to chain this panels configurable.

I followed the instructions in Can I chain Panels? from ESP32-HUB75-MatrixPanel-DMA I quickly noticed the following statement:

Finally, if you wanted to chain 4 x (64x32px) panels to make 128x64px display (essentially a 2x2 grid of 64x32 LED Matrix modules), a little more magic will be required. Refer to the VirtualMatrixPanel example and the AuroraDemo example of its practical use.

Basically... if you need more than 1 row of panels, you should use VirtualMatrixPanel which I guess that could handle also the original use case of 64x64 panels even though is not strictly needed.

I need to test this in a single 64x64 panel since I don't have those (give it a go please @jnthas) but I think that it should work.

Added a setting section too to make this easily configurable

imagen

Apologies for the diff changes about format in firmware/lib/cw-commons/CWWebServer.h, those were made automatically by my VSCode, I can revert those if requested

@jnthas

jnthas commented Feb 5, 2025

Copy link
Copy Markdown
Owner

I can test it here. Just let me know when is ready. Thanks for the PR!

@krzimmer

Copy link
Copy Markdown

@albpara could this be extended to support multiple chains of 64x64 panels?

@albpara

albpara commented Apr 15, 2025

Copy link
Copy Markdown
Author

I don't see too much sense on that since the clock uses 64x64 resolution.

What are you trying to achieve?

@jnthas

jnthas commented Apr 21, 2025

Copy link
Copy Markdown
Owner

@albpara I see the PR is still in Draft. Let me know what you need to complete it.

@albpara

albpara commented Apr 21, 2025

Copy link
Copy Markdown
Author

Just need a confirmation of my changes working with a single 64x64 panel and I don't have any... is it possible for you to give it a try @jnthas?

@krzimmer

Copy link
Copy Markdown

I don't see too much sense on that since the clock uses 64x64 resolution.

What are you trying to achieve?

I have an idea for a 128x64 design. Is there a resolution limitation?

@jnthas

jnthas commented May 1, 2025

Copy link
Copy Markdown
Owner

Branch albpara:feature/support-chained-64x32 is working great here.
image

@albpara albpara marked this pull request as ready for review May 2, 2025 15:07
@albpara albpara changed the title Support chained 64x32 Support 2 chained/stacked 64x32 DMD Led Panels May 2, 2025
@albpara

albpara commented Apr 3, 2026

Copy link
Copy Markdown
Author

@jnthas are you considering merging this?

@jnthas

jnthas commented Apr 3, 2026

Copy link
Copy Markdown
Owner

Hello @albpara. Since I tested and it worked, we can merge it. Ii seems I didnt merge at that time because the PR was in draft.

And now I can see the build is failing, I want to check if the problem is your branch or something else.

@emccarron

Copy link
Copy Markdown

@albpara ... This is cool. I got it compiled and uploaded -- but only my second 64x32 on the chain is working... Any thoughts? Digging now...

@albpara

albpara commented Jun 2, 2026

Copy link
Copy Markdown
Author

Looks like your panels are not properly chained @emccarron, it usually have arrows in the back indicating the input and output. have a look at this..

Please note that the below panel is rotated 180 deg compared with the top one, I will try to get a picture for you.

@emccarron

emccarron commented Jun 2, 2026 via email

Copy link
Copy Markdown

@krzimmer

krzimmer commented Jun 3, 2026

Copy link
Copy Markdown
IMG_9495

This is the back of mine.

@emccarron

Copy link
Copy Markdown

Yup. Same, except I have ribbon cable connecting an ESP32... In my case, the panel to the left is the illuminated one. It shows the clock blocks and Mario jumping in every minute. The panel attached to the ESP32 is black. Switching panels changes nothing.

Kinda scratching my head here... Just blew away my VSCode install and am starting over... :)

@emccarron

Copy link
Copy Markdown

OK, for shits and grins, I added a 3rd panel to the chain. Changed CHAINED_NUM_ROWS to three, and the working top half of the animation appeared on the third panel... :)

@emccarron

Copy link
Copy Markdown

change it to 2, and the working screen moves to panel 2.

Ready for this? Change it to 1 and the working screen is duplicated across all 3 panels.

@krzimmer

krzimmer commented Jun 3, 2026

Copy link
Copy Markdown

What chain type do you have defined? I'm using chain top right down.
#define PANEL_CHAIN_TYPE CHAIN_TOP_RIGHT_DOWN

These are my RES, ROWS, COLS settings:

#define PANEL_RES_X     64     // Number of pixels wide of each INDIVIDUAL panel module. 
#define PANEL_RES_Y     32     // Number of pixels tall of each INDIVIDUAL panel module.

#define VDISP_NUM_ROWS      2 // Number of rows of individual LED panels 
#define VDISP_NUM_COLS      1 // Number of individual LED panels per row

@emccarron

Copy link
Copy Markdown

I've tried several chain methods. Even if it were wrong, I'd still expect display on both panels.

I've swapped panels with a known good one. Swapped data cables. Got the T version working...

virtualDisp = new VirtualMatrixPanel_T<VIRTUAL_MATRIX_CHAIN_TYPE>(
CHAINED_NUM_ROWS,
NUM_COLS,
PANEL_RES_X,
PANEL_RES_Y
);

And still nothing on the first panel. I'm missing something fundamental, I fear...

@emccarron

Copy link
Copy Markdown

Found the problem. Answer was in an issue over on the main jnthas page.

//clockface = new Clockface(dma_display);
clockface = new Clockface(virtualDisp);

Replacing commented line with new line did the trick. Thanks!

@jnthas

jnthas commented Jun 5, 2026

Copy link
Copy Markdown
Owner

Hey folks. The build is failing because there is a wrong symlink (firmware/lib/cw-cf-0x01) in the lib/ folder. Can someone remove it so I can merge this PR?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants