monochrome 16x16 led matrix with shift registers

i have read the other posts on this forum on the same subject but didnt feel they covered my subject well enough to keep me from a new thread.

well i want to build a big 16x16 or maybe 11X20 led matrix with only one color.
i have read the http://www.arduino.cc/en/Tutorial/ShiftOut guide and it feels really logic.
so i am thinking of just multiplying the circuit so for a 16x16 i would need about 32 shift registers which is fine as i love soldering :slight_smile:
there is probably a lot of different approaches:
ive looked on the charlieplexing methid but it seemed too unstable and dificult when you reach above 8x8 matrices.
ive also looked on different matrixes with driverboards on them but these keeps me from my second point:

the whole matrix is to be modular and extendable. and it should be based on large pixels. ive thought about using glass blocks like in the blinkwall projects with the leds behind them.


the image above shows a really rough(please dont take this image too seriously i know it lacks data connections and resistors)sketch of the modular design. then you can click more rows to either extend horizontally or vertically as your wallet gets more money and your hands more freetime.

well so do anybody have anything to say to my idea of extending the original shiftout article on the arduino site to let me do 8x8+ matrices?

please dont submit kind links to different expensive solutions as i dont have the money to try them out anyway. i will try to keep to the registers, resistors arduino and soldering madness :slight_smile:

thanks for future reps! :wink:

What about multiplexing using 4 shift registers? 2 for rows, 2 for cols.
It should be easy to extend.
I don't know if will work right for very large arrays, but you could start using a 16x16 configuration.
Take a look on google for "avr large led matrix", you'll find some examples for really large matrix.

I am making (well in the process of rewiring cause I messed up) a 32x32 led matrix with only 8 shift registers like mentioned above

the biggest issue I am having with it is speed, if you do a matrix only in a xy fashion there is a lot of led's to blink and it wants to flicker bad

using the amount of shift registers your talking about effectively reduces that since your cutting down "travel time" to each 8x8 matrix

what I am doing to counteract this is using the atmega's spi hardware and scanning by line (which is driving my shift registers over their max current by 10ma and probally will not hold up long)

hey thanks for the fast reply!
i tried searching and found this nice echematic:
http://www.scienceprog.com/wp-content/uploads/2006i/matrix24/matrix1.png
it describes a 24x24 led matrix using 74374 ics which i guess is shift registers and a strange obsolete chip which i absolutely dont know anything about :slight_smile:

well it looks really nice and feels like its a proof of the extension of shift registers i was talking about.

one thing though is that i dont get how you come from the situation where a shift register is used to directly control a number of leds. to the situation where one register ontrols cols and another rows.
can someone please explain?

well christo youre also welcome to tell me a little more on your ideas

thanks!

The integrated Circuit 74374 is a Octal D Flip-Flop it is not a shift register.
It is in effect a latch that holds 8 bits of data. The data is applied in parallel to all chips and one chip is latch to catch the data. This is repeated for all the chips until you have outputted all 6 bytes.

to the situation where one register ontrols cols and another rows.

It's the way you wire the LEDs up, in rows and coloums. You can have all the coloums sunk by a shift register but the rows have to go through a top switch to to supply the current.

I am making (well in the process of rewiring cause I messed up) a 32x32 led matrix with only 8 shift registers like mentioned above

please tell me if you have a thread on the design.
osgeld i guess the amount of data and actions you demand from the 8 shift registers is too much compared to what they can deliver in fixed amount of time. i guess what you did was that cols and rows thing.
it anyway gives 4 chips for cols and for chips for rows. which leads me to grumpy mike :slight_smile:

ou can have all the coloums sunk by a shift register but the rows have to go through a top switch to to supply the current.

sunk by a shift regiser - do you mean simply controlled by a shift register i guess so.
through a top switch - whats a top switch? (sorry my bad english understanding)
i guess that shift registers dont supply the needed current but only tells when to go on /off and such , is pwm possible? (used for dimming)

i once saw a design on instructables which featured shift registers to control the cols and some transistor/resistor/ic to controlplus supply current to the rows. does anybody understand this :slight_smile:

about my misunderstanding on the flipflops ive read up on it at wiki, and it seems to be some lowlevel kind of ic. like nand gates and such or inverter. i guess that a flip flop from its name must be something that goes 0011110010101001001 hehe :slight_smile:

so grumpy mike why does it make sense in that design to use the flipflops?

please tell me if you have a thread on the design.

no not on this one, and probably not ever for this one, its quite ghetto and unless I can drop the line scanning I dont want anyone making something that sits outside the bounds of the hardware based on my recommendations

osgeld i guess the amount of data and actions you demand from the 8 shift registers is too much compared to what they can deliver in fixed amount of time. i guess what you did was that cols and rows thing.

it wasn't the registers fault, they can handle speeds up into the mhz, but the arduino shift out function was the bottle neck

course I will not know if magic tricks are really needed until I actually get it wired up right and working, but simulations on a 32x32 grid 1 led at a time (row col scanning) using shift out resulted in not really flickering, but more akin to a rolling tv display

you might be wondering "whats the point if its slow and ghetto", it was mostly a learning experience for giggles, and if the speed is what I predict then I will have to revise the design appropriately (and make a pcb, I am about tired of wirewrap at the moment heh)

just as a general guess I would say you should be ok with row/col scanning, since your dealing with 4x as many leds less


above is nice 16x16 led matrix however not only a matrix . it is based around the atmel avr mega 32 and some other ics. its featuring a keyboard ps2 input and some on board games. i dont know what i can remove from the design to make it only a led matrix able to be connected to the computer.
here is the article:

This is a very ambitious project.

i dont know what i can remove from the design

You will also need to add/write the software.

About the only thing you can remove from this is the real time clock DS1307 and components around it.

You have to be wary of some one who draws a circuit and can't get the LEDs the right way round.

A flip flop is no lower chip than a shift register, in fact they are very similar in internal construction but are wired up inside differently so they behave in a totally different way.

Sinking current is drawing current down to ground - those transistors in that posted schematic do that.
Sourcing current is supplying it from the +ve rail, a top switch is a transistor or FET that does that.

is pwm possible?

Not using shift registers of this size on a matrix this large.

However, I do feel you are way out of your depth here and you will only give up after wasting time an money because it is too much for you.

Start off simply and do a 4X4 matrix and learn how to do it yourself, then moving up is not so hard.

aye, the first one I did was a 4x4 (or maybe an 8x8), and it was very useful on understanding many aspects of displays like you are proposing

  • they are dead easy to make out of discrete components (well not counting the IC)

please dont feel that I think your incapable, but when you start building these things it does take alot of head scratching to get it right, my current one is the 3rd matrix ive built, and its ghetto and i am rewiring it a second time ... if that tells you anything :slight_smile:

You have to be wary of some one who draws a circuit and can't get the LEDs the right way round.

or cant be bothered to go back and fix it eventho its being done in cad (from someone who hand draws his)

thanks for your nice replies!
yeah i guess its a little over my head -- but:
actually i asked this thread to hear about the possibilities and solutions to such a matrix. it will not be on the desk before i have made my way through controlling 1 led, 2 leds, 4 leds, 8 leds, 16 leds, 32 leds, 65 leds etc.
its a natural progress. but the reason for me asking anyway is that i need some perspekctive in a project to get myself going through the initial stages. this perspective is the reality of greater evolutions of the matrix. as i wrote i hope in the future i will be making a large wall with glass bricks ala blinkenwall. but only in monochrome.

so to keep everything cool:
i am in the stage of going through the beginning projects of leds and so forth but i am more than interested in learning about what troubles there is generated when you create bigger matrices.

so lets continue this thread!
when i reach the state where i have progressed myself through to the 16x16 matrix i will make a guide so people like me dont have to waste time from people like you hehe :wink:

osgeld: your reply on your 32x32 matrix and what you describe as ghetto approach. i understand ghetto approach as tinkering your way onwards which is the same approach i use when programming in anew language i dont now so that i can strongly support :slight_smile:

when you say it was the arduinos shiftout function that created the bottleneck. what could be the sollution - writing in another language, c maybe? trying to put the shiftout functions out of the arduino and into a special ic? it kindo provokes my deep trust in the arduino platform hehe.

and to grumpy mike: sinking current - if i just have thought it through i could have imagined what it could be. connecting your electronics to a metal sink is kinda grounding. (sorry my bad english, it creates troubles once in a while)

again to sum up: i really want to know which technologies are involved in such a project so i can start learning about them from books and wiki.
right now in keywords ive got
shift registers, flip-flops,multiplexing - anything else?

and btw i am quite good at the software part (been programming for years)

kinmd regards and sorry my long replies

The options are to have a multiplexed array or a statically addressed array. Both have relative merits. You have to know where you want to go before setting out, otherwise you wast a lot of time on techniques that are of no use for your final problem.

The options you have for a big matrix are limited. If the matrix is really big then you should abandon any idea of multiplexing it in software and concentrate on hardware multiplexing with chips like the MAX7219, that can handle an 8X8 matrix.
Stepping up the MAX6954 can handle 128 LEDs, after that you have to cascade chips to get more LEDs.
Monochrome or colour makes little difference, you just have three monochrome circuits to get colour. However what does make the difference is if you want to control the brightness of each LED, then you have to drop down to chips like the TLC9540 which will handle 16 LEDs but each one at any brightness.

created the bottleneck. what could be the sollution - writing in another language, c maybe?

The bottlekneck is one of hardware access not software.
Did you not know the arduino is programmed in C?

i will make a guide so people like me dont have to waste time from people like you

Fine sentiments but as you pointed out at the start of the thread:-

i have read the other posts on this forum on the same subject but didnt feel they covered my subject well enough

When you know so little (and that is no criticism because we all have to start somewhere) you can't generalise so unless something is coutched in exactly the words you are expecting you won't be able to understand it.

created the bottleneck. what could be the sollution - writing in another language, c maybe?

The bottleneck is one of hardware access not software.

and the solution was to use the atmega's hardware spi port, which is not directly available as a arduino command

antima55,
The solution with 4 shift registers (595) is tested and true. You can adapt this schematic, which is a shield for 2 RG (bi-color) 8x8 LED matrices, to your 4 single-color 8x8 LED matrices: