Those days I was busy on other projects. Sorry for the late update!😂
And since I'm not a native English speaker, feel free to leave a comment, if there're any improper expressions or grammar mistakes. Thanks.❤
At first, I thought I could drive the array using 74HC595 for anode, and 74HC138 for cathode. But I was wrong. 74HC138's driving capacity is too low. So when there're many LEDs lit in one row, the row became really dim. Here's an example:
This is because of the weak driving capacity of cathode.
So I realized I have to use MOSFETs for cathode. For this application, we just have to use a n-channel MOSFET, and connect "Source" to GND, then, it will behave like a low-side switch: if we output HIGH to gate, source-drain is connected, so the switch is ON; when gate is LOW, there's little current going from to drain to source, so the switch is OFF.
So I designed a PCB and made it. In fact, it arrived last Friday, at night. But I can't wait to solder it!
(Sorry for my poor soldering skill, soldering these tiny MOSFETs can be a disaster!)
Now it's time for a test.
Looks OK, yeah? Though there are still (un)noticeable brightness differences... (Look at the first line. I turned my camera's ISO setting to a really low value - about 100, to capture this.)
But, when I managed to light all the LEDs... they all suddenly became dark. I tested the current when half of the LEDs are lit, It's about 0.4A. It seems like the fuse in Arduino stopped me from doing this... So now I have to find another power source...