A LED matrix is a fancy piece of hardware having 64 LEDs (in my case 128, 64 red and 64 green leds), which have not as many pins. The idea is that with multiplexing, you can light one row at a time, and keep looping through all rows, so it looks all LEDs are lit, but actually are lit 1/8th of the time. (For some reason it seems more logical to me to loop through the 8 rows, in stead of the columns. Especially when you want to build a LED matrix showing the time or a nice message using 8 rows and many many columns.)
With a bit of research, I found a webshop called Sure Electronics offering 10 pieces 8x8 bicolor LED matrices. (With a bit of shipping costs, still very cheap. Actually I found their ebay webshop and ordered there.)
Controlling one 8x8 LED matrix required a lot of wires, 8 row and 8 column wires. But the ARDX kit comes with a 74HC595 shift register. Using this shift register, the number of required wires reduce a bit. We'd have: ground, vcc, data, clock, latch and 8 column wires. That is still 13 wires...
But when using multiple shift registers to power the columns, the number of required wires stays the same... The the shift registers pass on the data (on/off values of LEDs) and the row wires power the complete row of all LED matrices.
The ShiftOut tutorial provides all the details needed to wire everything up and even some code samples to get you started. Probably in some future post, I'll unveil my code and explain the fine details of controlling multiple shift registers for multiple LED matrices.
My project is a simple clock, that would require 32 colums, four 8x8 LED matrices, to display "HH:MM" in a 5x8 font. That requires quite a lot wires to put on a breadbord, or even two. So I bought a prototype circuit board, and I'll solder everything together. For now I've put 2 LED matrices on my breadboards, and I'm displaying only the hours.
At first I used a small resistor for every rows, adding to the number of connections, but if you carefully calculate every aspect of your setup, it might just work without the resistors... Tinkerlog.com thoroughly explained LEDs and why the would require a resistor. My LED matrix specs have the following relevant numbers:
- Max current: 20mA
- Max puls current: 100mA (pulse <= 10ms and duty < 1/10)
Tomorrow I'll start soldering everything together on a prototype circuit board. I guess it will take some time to solder all those pieces...
After that I'll add an alarm and programming buttons, DCF-77, some nice case with touch snooze switch?
plese can you send me the code at dhara.rohit@gmail.com
ReplyDeleteWhich Pins are used on arduino for rows? Why dont u use 74hc595 for rows? Btw i m New to arduino. Trying to make a 64 x 8 matrix, but already suck at 16x8. 8 by 8 runs great. Would like to try ur Wirkung
ReplyDeleteTo run an 8x8, you'll need (you'll want, that is. You can do it the hard way, if you *really* feel like it) two 8-bit shift registers. One will control the rows, the other will control the columns. However, at that point, you can expand another 8x8 with only one additional shift register. Just tie Q7' of the first to DATA of the second. Whatever used to be in Q7 of the first shift register will overflow into the second.
DeleteThere's going to be a limit to how far you can expand this before you start running into timing and flickering issues but, you can probably get a good 4 or 5 8x8s running with just 5 or 6 shift registers. Each matrix gets its own shift for the anode and they all share a shift for the cathode.
Your articles are great. Why did you stop?
ReplyDelete