hi,
I've got two LED-matrizes being powered by two Max7219. The first matrix is working fine, but the second is not as bright and slightly flickering all the time.
I wanted to try to amplify the load and clock signal as explained in this PDF and see if it works then: http://tomekness.files.wordpress.com/2008/01/max7219_tutorial_pre_c.pdf (image on the last page)
But I don't know a lot about that stuff and so I don't understand how to wire the transistor into the whole thing. Do I add one for every Max7219 or do I just need one between the Arduino and the first Max? Do I need one transistor for the load and one for the clock signal?
Maybe someone can help?
Thanks,
Meht
The 7219's should handle it ok, I have 2 8x8 matrixes and 4x 4 digit 7seg displays powered by 4 7219's with no problem, have you got the correct resistors for the power you need?
I am using 22k for my displays which gives me a good daylight and night range using the library brightness control.
okay, so no amplifying shouldn't be a problem.
i'm pretty sure i'm using the right resistors, at least according to a table i found (Arduino Playground - MAX72XXHardware). it's somewhere around 24.5KOhm. I will try out other values tomorrow, maybe that helps.
thanks
Have you checked your 3 input wires are connected correctly, and that you initialize both chips in software, I had some problems with this! if you dont have the chip to chip connections correct you get weird results!
okay, I found the problem. it was in the code. :-/
i've got a button on the bread board which i use to switch through all the leds one by one so i can see if they are all working correctly. some leds stayed lit, though, so i just copied the "switch all leds off" code from the setup. now i realize that it is totally logical that some leds are lit the whole time - i just never switch them off... ^^
(...)
if (zaehler == 3) maxAll(1,8);
if (zaehler == 4) maxAll(1,16);
if (zaehler == 5) maxAll(1,32);
if (zaehler == 6) maxAll(1,64);
if (zaehler == 7) maxAll(1,128);
if (zaehler == 8) maxAll(2,1);
if (zaehler == 9) maxAll(2,2);
if (zaehler == 10) maxAll(2,4);
if (zaehler == 11) maxAll(2,8);
if (zaehler == 12) maxAll(2,16);
if (zaehler == 13) maxAll(2,32);
(...)
without this code
for (e = 1; e <= 8; e++) { // empty registers, turn all LEDs off
maxAll(e, 0);
}
everything seems to be working properly now.
thanks for your help and your time.
there is still this one odd thing, tough. i'll just repost from a previous post, maybe someone can say something about that:
the first led matrix is running fine, but the second one is giving me problems. wether i connect it to the first or the second max7219, one specific led is always lit, even when i change the code to switch all leds off and then do nothing.
that doesn't make a lot of sense to me, as i would have thought that when the arduino (it's a duemilanove, btw) tells the max to switch off all leds, no current whatsoever would reach the led matrix.
right now i have this one led dangling from only one cable, so it doesn't interfere with my led-checking. but i still think it's defying the laws of physics.
any thoughts on that?