Corrupt image on majority of single panel (4x64 matrix)

Has anyone got an idea of what’s going on here? In these pictures, the top right panel is doing something strange (ignore what’s going on with the bottom left, I think it’s faulty). It’s the panel that the SmartLED Shield and Teensy 4.1 is attached to. If I move the shield to another panel I get the same outcome so I’m thinking it’s something to do with either the shield or whatever the code allocates to panel 1.


*Removed

Here are the original files:
*Removed
*Removed

Any help would be much appreciated!

P.S. Ok, just learned that I can only post 1 image as I’m a new user. I will try to add more in a follow up to this initial post.

-Warren

Original 1:
200 (1)

Original 2:
MiPan (3)

Does your panel have an FM6126A chipset?

Hi Louis,
Thanks for the quick reply. I’m sorry to say but I’m not sure how to check this. Here is a photo of the PCB, hopefully it gives you the answer. If not, please let me know how to find the chipset.

I see “GS6238S” on one of the chips, which is a chipset that other users have had trouble with, so it may not be supported by SmartMatrix Library:

In case you’re not following that other thread, someone with a GS6238S chipset was able to make their panel work by lowering the brightness. It might be worth giving a try

As Louis says, I’d be interested to see if the lowering the brightness has an effect on the issue you’re seeing.

I have, to a small degree, been able to replicate something similar but only with very low RGB values. Here’s a photo with a 32 x 32 square appearing dimmer than the rest of the display (the display is made of 4 64x64 panels).

I tried changing values in the configuration files but not much really made a difference (the exception was FLEXIO_CLOCK_DIVIDER, but you had to set it to a really high value for the benefit to be noticable, and the RefreshDepth - lower values made it go away).

Anyway, to cut a long story short, I’ve determined that the issue was the long ribbon cable connected to the output of the panel with the issue. If I disconnected the cable from the output, the problem disappears. If I connect the cable to the output of another panel, that panel has the problem. I suspect that the long cable is introducing too much capacitance (or inductance) for the chips to drive, causing the effect.

So, if lowering the brightness or the RefreshDepth doesn’t work, I suggest removing all the ribbon cables and then adding them one-by-one to see if any of them are introducing the issue.

Hi Louis,
I was a bit skeptical but it turns out that it has actually worked. The image is spot on now and all I did was reduce the brightness from 255 to 254 as suggested.
Now I see this working, I want to go bigger. I don’t suppose you know of anyone trying the teensy 4.1 with SmartMatrix running 192x192 pixels (9 x 64x64 panels)? Thanks again for the help.

Thanks for the suggestion @welshcoder, I didn’t try the ribbon trick you mentioned because as you might have read above this reply the reduction of brightness has fixed the issue. It only to the single value drop to make everything look as it should.

This is the biggest setup I’ve seen:

If you want to try to go bigger, try it out virtually by setting the dimensions to what you want, lower the quality, and run the sketch on the existing panels you have. SmartMatrix Library has to shift out the data even if the panels aren’t there so if the larger dimensions look good on the panels you have, then you can make a decision to buy and add more panels.

At that size, I’d recommend reducing color depth to 15 bit get an acceptable refresh rate (120 FPS or more to avoid flicker).

Thanks for the heads up, what is the default refresh rate? I can see there is a way of setting it but it’s commented out:
//matrix.setRefreshRate(90);

Thanks again Louis for the hot tip, I’ll give that a shot and see how it goes.

You can set it using that commented out function, although if you use a value that is greater than the maximum for your array size and color depth, then the library will reduce the actual rate automatically. You can measure the actual refresh rate with matrix.getRefreshRate().

By default it uses 240 FPS or the maximum possible (if 240 is too fast).

It’s usually best to set a refresh rate a bit lower than the maximum possible refresh rate for improved brightness. You can experiment with different color refresh depths and screen refresh rates and see how it looks.

I run 128256 at 7bpp on rPi and only get about 100Mhz refresh rate with some tricks that this library can’t do. That’s 32K pixels on a single channel.
192
192 is 36K pixels, so I doubt you will get a refresh rate that will work for you. If you want to go that high, I recommend you use the rPi library and multiple channels if you can.
See Marc's Blog: arduino - RGB Panels, from 192x80, to 384x192, to 384x256 and maybe not much beyond

Sorry for dragging this thread back up after so long but I thought it would be the best place to do so. I tried what Louis suggested and set the dimensions virtually and run on the 128x128 matrix… surprisingly, it ran fine! Next, I’ve gone and purchased the extra panels so now I have a 192x192 matrix ready to go, I’ve hooked everything up and fired it up and only the top 2 rows of panels work (192x128) and the last row of three remain black. The picture is showing the top third and isn’t distorted in any way so I’m guessing it’s trying to show the whole picture. The console reports that it’s loaded the gif correctly. Any ideas what might be going on here?

I’m hoping a picture might help here, I’ve tried a few different changes in the config but no luck. The bottom three panels actually have the first 2 rows of pixels illuminated but it doesn’t seem to be matching with what would be expected from the GIF however the refresh rate seems to be spot on. Does this help with finding the issue?

It could be an issue with the GIF decoding library, are you able to try to isolate the issue by using a different display or something to see if the pixels are being decoded by the library properly?

Can your matrix display all the pixels properly when running another non-GIF sketch?