Go Down

Topic: 'Throbbing' 8*8 dot matrix. (Read 1 time) previous topic - next topic

sophie_h

I'm currently using an 8*8 dot matrix, I hope to make the lights throb or pulse in unison. The time between each pulse and the brightness is unimportant, it's just to be used for a 'proof of principle' prototype.

I currently have the setup suggested by arduino: http://arduino.cc/en/Tutorial/RowColumnScanning , is this correct? Any help with the code would also be greatly appreciated.

Msquare

"Is this correct" - what are you asking? If there is a known documentation error on that page? Or if it fits the equipment you have bought?

AFAIK the example page is fine. I have not tried one of those so I have no practical comments if a resistor on all -say- column pins is required (which I think it is... )

If you fix the example code to turn all LEDs on ... then something will fry. 64 LEDs each taking 30mA will be too much for the Arduino and too much for a USB supply. You need to put driver transistors on both rows&columns and get a 2A supply.

Search around this forum (not the wiki) a little more - I'm sure there is a previous thread covering this.

raron

Msquare is right - you need a resistor for each column. If you have connected it up exactly like on that page (no resistors), then you probably have damaged the outputs on the arduino. Or / and shortened its life! Amazingly there is not even a mention of current limiting resistors on that page.

Also, without some external driver chips (seach ULN2803 on this site, for example) or transistors, the display will be rather dim if you take into account that one row of possibly all LEDs lit (8 LEDs), go in/out of a row output pin from the arduino. That is about 20 mA total for 8 LEDs. Absolute max is 40mA from one output pin, but you should never go this high. Btw total max for the atmega 328 (heart of many Arduinos, I don't know which one you got), is 200mA (not for an output pin, but the hole device incl. i/o pins).

Here is a nice page explaining how to connect a LED just in case (made by "Grumpy Mike" on this forum): http://www.thebox.myzen.co.uk/Tutorial/LEDs.html

I don't know what you know about LED matrix displays, you cannot (or should not try to) have all LEDs lit simultaneously. Here only one row is active at any one time. Hence the current through a column resistor only goes to one LED at a time, even though they (column resistors) are connected to all LEDs in a column.  Done fast enough it will seems as if the hole display is solid (POV - Persistence of Vision). Update it too slow and it flickers.

As for the code, the one provided on that page should work Ok as a starting point. In particular look at the refreshScreen() function. It's not perfect though, and lacks a delay after each frame update for one, from my quick skimming of it.

Attached an example with discrete LEDs, note the ULN2803 transistor array will invert the row levels.

Go Up