3 Simple Ways to
Share What You Make
With Instructables you can share what you make with the world — and tap into an ever-growing community of creative experts.
Other ways to share:
Share one or more photos of a project, recipe, or whatever you've made, quickly and easily.
Share your step-by-step photos with text instructions of what you made so others can do it too!
Share your how-to video. You'll need your embed code from a video site such as YouTube.



Arduino / Processing Audio Spectrum Analyzer
by
Keanan
Programmable LED Umbrella
by
huebner5000
Interactive Arduino Powered Coffee Table
by
DanNixon
How To Make Two Daft Punk Outfits with Helmets
by
derektroywest
Yet Another Daft Punk Coffee Table (5x5 LED Matrix)
by
lincomatic
Costume: LED Helmet With Animations
by
eXtremeSomething
Solderless Breadboard Layout Sheets (plug and play electronics)
by
oomlout
Pong
by
patrickmccb
Total Views: 29,681
Today Views: 29
Comments: 27
Rating: 4.1

All Steps Viewing
View all steps of an Instructable on the same page when you're a Pro Member.











For the multiplex solutions being discussed below - if you are switching the LEDs on and off row by row to get the overall effect - won't that decrease the apparent brightness of the LEDs when ON very significantly? Decrease by a factor = 1/(number of rows)?
Is there an LED solution that works with the Arduino that keeps the ON state of the LEDs even when the other rows are being addressed? I assume this would require every LED to have a separate driver pin?
BUT, the driver chip just compensates for this by driving the LEDs a bit more harder than normal. This means they are brighter, and the whole matrix is brighter.
Overdriving them is OK, because as you say, they are only turned on for 1/8 of the time.
For the 10 mm diameter, white LEDs we used in Peggy 2, this is 90 mA transient vs 30 mA continuous. The only downside to setting the current supply >30 mA is if your software crashes (or has a logic error) before the next multiplex step switches off the LEDs - you can blow them. Did you worry about this for your software?
No, I don't have to account for it because I have a driver chip between the micro and the LEDs - a MAX7219. So I send the pattern I want once, and the driver chip displays it (using multiplexing) until I send a new pattern.
The advantage of this is that I don't have to worry about continually updating the matrix in software, and it frees up a lot of pins on the micro. The disadvantage is that it costs more, and can be less flexible - for example the LEDs are on/off, no grayscale control (although of course there are LED driver chips that can do this)
I'd love to get a peggy - the project that uses it as a video display is incredible.
I looked at the Maxim data sheet. A MAX7219 ~$13 in single quantities - can control 64 LEDs. Am I correct in understanding the following?
(1) It will drive 40 mA max per LED/segment.
(2) With 64 separate LEDs the chip will refresh all their states at about 800 Hz. I am assuming that at max intensity the LEDs are on approx 1/8th of the time - since there are 8 banks of 8 LEDs each? ( For the large/bright LEDs transient currents (10% duty cycle) of ~100-150 mA are permitted - if 40 mA is the max for this driver then one is giving up some brightness there?)
(3) For intensity control it uses further time modulation at 1/32nd resolution. The intensity is set globally for all 64 LEDs. You can't change the relative intensity of the LEDs separately.
(4) You are of course free to determine if each LED is either on or off through serial commands.
(4) The serial interface for sending updated state information for each LED runs at 10 Mbit/sec max, with each command taking 16 bits. So the time to write a command to change the on/off state of an LED is 1.6 us. To send the instructions to change the state of all 64 LEDs (unlikely, but limiting case) say would take approx 100 us. This is fast enough to not be a limitation, even for an LED array with many updates. Or am I missing some aspect of the communications overhead?
For the Peggy2 type display 25x25 one would need 10 of these chips, which is ~$100-$130 so I understand your comment on cost. Dedicating a micro-controller to handling display updates, with some discrete electronics is the more budget option? Although the programing to get the desired visual update behavior is also a challenge...
On the other hand in principle a LED display driver could drive the LEDs much closer to their maximum brightness (if it can supply the rates maximum transient currents) without fear of software crashes causing LED burn out?
Did you ever come across a version of this kind of display driver chip that allows different intensities on the LEDs, and also handles a larger number of individual LEDs (>>64) at a lower cost per LED?
Thanks for the discussion, Rick
http://www.taydaelectronics.com/servlet/the-788/Display-Drivers-serially-interfaced/Detail
You know more about this / have a better understanding than me. I just muck around 'till something works.
So the best I can do to answer your questions...
(1) I think so yes
(2) Sounds good :-) All I know is that the LEDs seem just as bright being driven my the 7219 set to the max current as when I fed them individually with a 30mA source. Of course, the human eye isn't a great judge of light levels.
(3) Correct - you can dim/brighten the whole thing at the same time only.
(4) Yep - The libraries I used made it easy to either update a single LED or the whole thing at once.
(5) You sound a LOT more knowledgeable about this than me! I'll just say that I've never had a problem with update or refresh rates.
The TLC5940 and TLC5916 chips seem to be popular for driving LEDs when dot brightness is required. In fact they are often used for RGB matricies where the brightness of each R/G/B LED is adjusted to mix a colour. Both though are designed to control 64 LEDs, but can be daisy-chained. I think they run about ~$5 in quantity, so still not cheap for a larger matrix.
I doubt you could do something the size of the peggy for any cheaper than what EMSL have done. They have very cleverly pushed the hardware and software limits of the micro.
Do you feel able to publish the schematic (or just a hand sketch) of how your circuit for the coffee table was put together - doesn't have to perfect, but enough info to highlight any subtleties. I just want to make sure I don't have any misunderstanding of how to work at a practical level with the MAX7219. (I'm also going to look at the data sheets of the TLC5940 and TLC5916.)
http://www.instructables.com/id/Star-Wars-X-Wing-2/
The glazier I talked to was very helpful. He showed me different types of glass and finishes. I ended up going with two sheets of 3mm thick glass with some white plastic sandwiched between.
He also made a template by tracing my frame. This meant it all lined up exactly when the glass was cut, rather than him just cutting a 800mm square which would have probably been more square than my frame.
The edges are also proffesionally bevelled.
All up the glass cost AU$160, which is sounds not cheap, but really it's worthwhile.
Also it's heavy - take precautions.
(Seriously how much is the "reply" button confusing on this site - I see so many examples of people replying to the wrong comment.)
Also you'd be suprised at the cost - it'd be at least half if not more of the cost of the glass.
There is a place for it, and I have used it for other LED projects, but for a coffee table that is displayed all the time glass is the only way to go.
Using two LEDs per cell will increase the brightness, however, this will make the circuit significantly more complex. If you put them in series, you'll need to increase the supply voltage, if you put them in parallel, you will need to double the supply current. If you think you can overcome these design issues, then go for it.
The LEDs I use were "rated" at 20,000mCd, but that was definitely a lie. I bought some 20,000mCd LEDs from a reputable LED shop, and they are significantly brighter than these. As usual it's a trade off - you could buy some off eBay, they will be much cheaper, but probably not as bright. Buying from mouser they will be brighter, but obviously more expensive.
Do not expect any LED to be particularly bright during the day. Also, the diffusing material you use will have an effect on the final result. A more opaque material will more evenly distribute the light, preventing bright spots, while a more translucent material will be brighter.
Good luck, and post your results.
It can display any pattern you like. At the moment I have it running Conway's game of life. Here's a crappy video of some random patterns
The MAX7219 does all of the multiplexing magic. Yes you are right that they are turned off and on very quickly to make it look like they are all on at the same time. The MAX7219 chip turns on one row at a time, then the next row, then the next row etc.
Each LED only has connections to it's neighbours. This is a classic matrix configuration.
Thanks,
Matt
It's called charlieplexing. Each row of LEDs and each column acts as one output or ground connection. Thus, you can drive many LEDs from several pins.
Check out photo 2 - it's the MAX7219 LED driver. The chip is specifically designed to do all the hardwork of interfacing an LED matrix. It is very easy to use - needs only 1 extra component - a current set resistor. There is a lot of excellent code out there to drive it from an arduino.
P.S. Here's my 3x3x3 LED cube http://www.flickr.com/photos/92064251@N00/3126318178/