Hello, I have a Mega 2650 and 2 Waveshare 64x32 LED Matrix. I would like to daisy chain the two panels and treat them as one 128x32 Matrix. Either that or be able to send a different image to each Matrix.
I have the images working fine on one panel but can’t seem to get anything on the other display except an exact copy of the first display when chained.
I have tried a few different options and library’s in the Arduino IDE with no luck - the only one that seems to work is RBGmatrixPanel - but that doesn’t seem to support chaining displays.
Any help would be greatly appreciated!
Thank you,
Michael
1 Like
Welcome @Michael296239
I assume this is your device
Its been a while since I played with a similar unit, so from memory.
You should be able to connect a ribbon cable from Data Output to the next Data input, then clock in the extra “display” worth of data i.e. treat it as one screen.
You once you get different image on both, you should then be able to work out how to tweak it to align as a complete full image the way you want it.
2 Likes
Daisy chaining the panels means that they are configured as a single string of LEDs. If they are chained correctly then the only change to the code is to nominate the correct new length and format, ie 4096 LEDS to be treated as a matrix of 128x32, and then ensure that the array is loaded with data to match that length. If this is what you have done, have you confirmed that the library can handle this size of panel?
The alternative is to run them as two separate panels, using a separate port to drive each panel. This arrangement would be used where there is any issue with handling a matrix of that size (which could happen with an 8-bit MCU like the MEGA2560).
Can you show the exact wiring that you have used to daisy chain the panels, the configuration section of your code that matches the way they have been wired, and the details of how you are loading your display data into the array..
2 Likes
Thank you Michael - yes, that’s the display I’m using. I can daisy chain the display using the provided cable but that only gives me the same image on both screens. I’m using the RBGmatrixPanel library and that has been great for one panel but I cannot get it to work over two.
See how you go and report back your findings from @Jeff105671 post above.
From memory its just shifting in data, so to get the same image on both sounds like the same screen getting sent 2 or more times. 1st time world result in one screen only, 2nd time will result in data on screen one pushed to screen 2 and the “new/same” screen clocked into screen one.
So very much sounds like what Jeff is talking about.
1 Like
Hi @Michael296239
Welcome to the forum!
The Adafruit RBGmatrixPanel only supports up to 64 leds in width, GitHub - 2dom/PxMatrix: Adafruit GFX compatible graphics driver for LED matrix panels is capable of chaining displays together and has an example of how it can be done towards the bottom of the page.
1 Like
Hello Jeff,
I have just used the supplied cable to daisy chain the panels. With my current code that uses the RBGmatrixPanel library I just get a duplicate image on the second panel.
The panel was wired to the Mega 2650 as per the instructions on the Waveshare site and seems to be working fine - for one display anyway.
I started with a code that produced the image in 64x32 for both sides - the image is LHS and RHS of a face. That code works fine. I have attempted to join the image ie one larger 128x32 image - but it fails when I try that.
This is the config code I have for the 64x32
#include <RGBmatrixPanel.h>
#define CLK 11
#define OE 9
#define LAT 10
#define A A0
#define B A1
#define C A2
#define D A3
RGBmatrixPanel matrix(A, B, C, D, CLK, LAT, OE, false, 64);
I have tried a few things - that I didn’t save - and they didn’t work. Simply changing the 64 to 128 doesn’t work either.
I’m pretty new to this so sorry if that’s dumb.
Thank you,
With that connection then the panels should be a single string. Changing the 64 to 128 is the first part of the task. Then you have to change the code that fills the matrix so that the image displays correctly. If you simply want to display the same image but at twice the width then you would fill the array by doubling up each pixel value in each line. To find out how it’s working you could fill the matrix with a pattern - for instance all the shades from 0 to 4095. Have you confirmed that the library can handle this size of panel? It’s quite possible that an 8-bit MCU like the MEGA2560 can’t handle a matrix of that size, or perhaps the library needs a special procedure such as splitting the matrix across multiple instances or handling it as several separate matrices. The details should be in the library documentation.
1 Like
Thanks Jeff - hoping to get some time to look at it again this week end. I’ll keep you posted - I appreciate your time.
1 Like