WLED driving a 4096 pixel matrix

Hi there. I’m new here.

Over the past few months, I having been putting together a 64x64 matrix of LEDs. It’s just about done, or at least to the point that I have started considering what will be driving them. When I first looked at WLED, I was disappointed to discover that it only supported 1500 LEDs. Then I was pleased to discover that it was open source. It’s been a real rollercoaster here. After learning how to compile WLED (easy), I set out to remove those pesky limitations where I could find them (surprisingly, also easy). I know what I’m about.

For details on the build, check this post.

The changes I made to WLED were minimal. In const.h, I updated MAX_LEDS and EEPSIZE to 4096. Along with removing the 1000 limitation on the web UI, that was enough to get the patterns working. To get ArtNet working, I also had to increase E131_MAX_UNIVERSE_COUNT to 25. I also disabled some services in wled.h, like Blynk and Alexa. Probably not necessary, but why waste the space?

The results (I apologize in advance for the bad video quality):

WLED Pattern Test

WLED ArtNet Test

OK, so…working. Not good, but working. The first obvious problem I have is mapping. Instead of 64 strips of 64 pixels, I went with 16 16x16 panels. That is going to make this part tedious. I am guessing that this part is handled in FX_fcn.cpp under the WLED_CUSTOM_LED_MAPPING section. So, if I understand this correctly, I just uncomment the define and build out the array in the order I want to see the left-to-right/top-to-bottom? So for the first line of the first couple of panels, it would be [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271…], correct?

Another problem I encountered was random blue dots blinking when I was receiving through ArtNet. You can see them in the ArtNet video. I’m not sure whether those are coming from my ArtNet sender (xLights), WLED, or the hardware. I’m not sure where to begin investigating this issue.

So there you have it. “WLED Unleashed”. Not perfect, but it works. There are probably a lot more things I need to change in the code, but I don’t know it well enough to know what those things are.

@Aircoookie So, when are we gonna get some of them tasty parallel outputs? I know, I know. Any minute now. :wink:


The addressable LED protocol sets the limit on how quickly all the data can be sent to all the LEDs in the data string from the ESP to the last LED. There is only a certain amount of time available to send all the data before it has to start over again. That time sets the limit on the max # of LEDs that be addressed. See this github for more technical details: https://github.com/FastLED/FastLED/issues/288

WLED is a little conservative to ensure acceptable frame rate (performance).
For 4096 standard RGB addressable LEDs, the frame rate will be no better than 8.14 Hz. That’s a horrible flicker during transition that is quite noticeable to the human eye.

Hope that helps.

@huggy-d1 Thank you, huggy-d1. Yes, I was aware of the bandwidth limitations and how they would affect framerate. Right now, it’s not much of a concern considering that this isn’t going to be a public display. In addition, I am hoping that parallel output support comes to WLED soon. I’ve seen Aircookie mention it a few times in the GitHub issues section, but the estimated release dates given have already passed. I’m guessing that with the pandemic and everything things have been pushed back. When support for it comes out, then I can just split them to 2 panels/pin. That should free up the bandwidth enough to get a decent framerate.

First of all, this is amazing! Awesome project!
When I started WLED I thought nobody at all would use more than 255 LEDs so I chose byte for storing the LED count :see_no_evil: Makes me really happy to see that the ESP handles more than double of my set maximum (although admittedly kinda badly).
Yep, you can use the custom mapping feature for this! Keep in mind it will use 8K of RAM, so impossible on ESP8266, but shouldn’t be an issue with the ESP32.

I will do my best for having multi pin output working soon! :slight_smile:

1 Like

I just finished my candle setup, for the illumination of the candle body we used 7 parallel outputs to SK6812 WWA strips. It worked astonishing well. But no idea yet how the programmer did it.
And it just outputs random brightness values. you also can set the color temperature.
How do I feed the Art Net stream into WLED ?

Hi, is the code of the candle project open source? I would love to take a look!

Although unrelated to this thread, making WLED receiving Art-Net in 0.10.0 should be as simple as selecting it in the Sync settings dropdown (instead of E1.31) and rebooting!

Hi It sure will be !

@Aircoookie Yeah, when I made the changes, I was thinking, “Surely it’s not this simple. There’s going to be some array constraint or something I’m going to break and it’s all going to fail.” But, it worked :man_shrugging:. Any pointers on what else I need to change in the code would be greatly appreciated.

Yes, I am using an ESP32. I’m trying my best to only use one for this project. It’s been a challenge.

@harueg To get ArtNet working, I had to:

  1. Configure Art-Net settings in WLED. They should be self-explanatory. Don’t use UDP.
  2. Point controller in xLights to the IP of the WLED device. I don’t know what you’re using for mapping software, but there should be an equivalent.
  3. Make sure the start channel and start universe matches between your mapper and WLED, as well as number of universes.

Thanks for the hints !
What is everybody using as a level shifter ?
@Aircoookie I have sent you an email.

@harueg Honestly, I haven’t really needed them yet. A friend and I have used several ESP32s and different types of LED strips, and the level difference hasn’t been an issue. I’m eventually going to get a board to plug the ESP into that provides level shifters, power plug, fuses, etc., but it isn’t a priority.

Sorry to use the gogle translator.

I have the same problem
use 840 leds in artnet mode

What I notice is that the led 511 of the first universe blinks blue

I use a Wemos D1.
I’m going to try ESP 32
Could you solve it?
If I use the effects panel via computer or telephone, I have NO problem.

Greetings to all

You can go the way similar to other WLED users and edit the artificial universe size limit for a single WLED controller. Then compile your modifications and load/test.

Thanks for the info
I’m going to play with that parameter.
Also before I’m going to put a level shifter, you never know

Thank you so much