XY Matrix 16x16 matrix (256 pixels) driven by an Arduino Nano, plastic diffuser,

I was going to post a new question, but figured I’d ask here since you’re an expert and I’m making something so similar (planning on a 16x16 or 24x24 matrix from ws2812b strips).

Are there any issues with how many LEDs one can put in series with respect to the data output? I swear someone just asked about that here and the answer was “yes,” but I can’t find it at the moment.

It looks like you’re driving all 256 from pin 5, so I’m guessing 256 isn’t a limitation. Primarily I’m wondering about signal dropout as each passes it on to the next, or issues with animation speed (updates getting from led[0] to led[255] fast enough). I get that the code can affect the update rate with all of those matrix calculations; I’m purely inquiring about the hardware aspect of the data line.

I didn’t see anything on the wiki addressing signal, just power.

I planned to hit each strip with it’s own power, but perhaps that’s overkill?

Thanks for any pointers and looks awesome!

Hi! The WS2812 and friends all “regenerate” the signal after each pixel, so that’s not an issue.
More likely to be an issue:

  • RAM. The microcontroller needs 3 bytes per pixel; an Arduino Uno (for example) has only 2048 bytes total .

  • Power. Each pixel can draw up to about 50 milliamps (0.05 Amps). 100 pixels = 5 Amps!

  • Speed. The WS2812 Neopixels can only push about 30,000 pixel updates per second down a single pin/wire. So 300 pixels can update only 100/sec. 3000 pixels, only 10 updates per second.

Please do feel free to ask more questions, or to get feedback on your design ideas – and if so, please do start a new thread, so more people can see and join in!

Fantastic info! On a tangential note, your response made me think of starting a new branch that could be used to allow the community to pitch in on the wiki. It could serve as a way to make the amazing information here more widely available. When it was deemed worthy, a page could be pulled into the master branch wiki. Just a thought!

This is all great info and I hadn’t even considered ram! Good to know I need to consider the possible data frequency as well. I have a teensy on loan so I’ll check the specs.

So, specifically, what’s your setup with respect to power and microcontroller?

@Tim_Lukasik and others having the "stray " problem. I know I’m replying to an old thread, but just stumbled here myself and had the same problem. It seems something goes wrong when pasting code from Google+ (something to do with unicode encoding I believe). Just grab the code from Pastebin (link in 1st post of this thread), and you’re good to go. @Mark_Kriegsman , great effect considering the length of the code! I’m hypnotizing myself with 8x8 matrix and Nano clone :slight_smile:

I know I sort of asked this already, but I’m finally about to build a 16x16 matrix. Is there a good reference for alternative programming structures, like composing the array from 4x16 and using 4 pinouts? I’m wondering if the math is primarily limiting or the update frequency you described?

If it’s math, there would appear to be little advantage to using sub-arrays. If it’s definitely update rate, then splitting them would seem better, assuming it can send the values to each sub-array and move on to send the next sub-array before the values fully propagate on the previous one. Hopefully that’s clear…

Said one more way, if I fill values for 4 4x16 arrays, does the code “hang” until the first set has been sent and only then move onto the next set? I may be confused by how this works as I’m not even sure how to wire up 4 separate arrays! I’m sort of assuming 4 calls to FastLed.show() for each mini array but am not sure!