Go Down

Topic: how many 8x8 led matrix modules can 1 adruino handle? (Read 1 time) previous topic - next topic

The_Doctor

okay guys I was planning on using shift-registers to do the individual matrixes and I figure I can get away with driving 10 display modules using just a couple of adruino pins to transfer the data.   I'm still figuring out how the SPI technically works and software wise.  I was thinking of hooking up a flash drive to it  to hold the display data as a file.  Now is it possible to also use the SPI while the flash drive is installed to feed the data to the display registers?

What I'm thinking is opening a file on flash drive, read a record, send data to display, update refresh long enough to read, get next record and repeat until end of file. 
I was also thinking of taking this concept minus the flash drive( use laptop as host) to make a chain of these arduino assemblies for a big christmas lawn display.

ElectronicsNoobie

I am also interested in the answer to this as I have also been playing around with LED matrices.

The limiting factor seems to be not so much how many matrices can you control but how fast can the arduino update them. As others have said you can use shift registers to control nearly unlimited outputs. If you want to display an arbitrary image you need to row scan your matrices and if you don't update the rows fast enough you get horrible flickering effects.

So far the biggest I have made is a 2 colour 24x8 array so effectively a 48x8 array. Further more I did two passes of each LED so I could create more colours and so this would be the equivalent of 96x8 or 12 8x8 matrix with only one colour.

I think this is about the limit you can achieve using the digitalWrite or shiftOut functions. However, it is possible to get a large speed up (at least 10 times) by bypassing these functions and setting the pin registers directly. Although this is obviously has its own pitfalls.

JoeN

#7
Sep 05, 2012, 08:40 pm Last Edit: Sep 05, 2012, 08:55 pm by JoeN Reason: 1

The limiting factor seems to be not so much how many matrices can you control but how fast can the arduino update them. As others have said you can use shift registers to control nearly unlimited outputs. If you want to display an arbitrary image you need to row scan your matrices and if you don't update the rows fast enough you get horrible flickering effects.


Just to point this out, but putting the row scanning (or column scanning) on the Arduino is a decision that you make.  There are drivers such as the MAX7219 that do the row scanning themselves.  You give it the data, it keeps refreshing the matrix at 100Hz or so until you tell it otherwise - it is both the high side and low side driver.  So it acts basically like a coprocessor for you.  Other chips like shift registers and the TLC5940 make you do that lifting because they are only low side drivers, but have other advantages (mainly cost for shift registers, great PWM capability for the TLC5940).

The limit with the MAX7219 comes if you want to update your image quickly - animations, scrolling, etc.  Then you might get artifacts with larger displays because the Arduino can't update all the MAX7219s fast enough.  But for static or mostly static content, you can really go nuts with those drivers.

AMS AS1100, AS1107, and AS1130 (charlieplexing) are also high-and-low-side drivers (i.e. coprocessors).

Are there any other good high-and-low-side drivers out there?  These drivers make it simple.
I have only come here seeking knowledge. Things they would not teach me of in college.

Go Up