This week I'm feeling much better about the work. I'm starting to feel like I have the hang of it, so I'm going to try to make the LED array.
Insert dramatic music here.
This is probably asking for trouble, but given that I’ve almost decided that my final project will have some sort of led interactive display, I think it might be essential for me to learn how to do this before I attempt it for my final project.
First, I had to get a handle on Charlieplexing.
While the picture above and other notes I read from Katerina Labrou
were very helpful, I still needed a little more information.
To be frank, she’s either smarter than me or simple has a richer background in electronics. As I read the theory it all makes sense to me and it’s perfectly clear, but unlike her, after a lot of reading and looking around I wasn’t able to make a design of my own so I decided to do Neil’s.
Another reference that was incredibly helpful was this Intructables page as it goes into detail about what is actually happening that makes the use of so few pins to control so many leds speraretely.
I’ll try to summarize as best as I understood. Charlieplexing takes advantage of several electrical laws. That is to say, that diods only send current in one direction (leds are diods), then that the human eye can only perceive light at certain speeds and then the fact that any given pin has three given modes: HIGH, LOW and INPUT. So, alternating all these things, you can control a higher number of leds individually without needing the same number of pins to control them.
After getting a handle on this, I did the board on Eagle.
Milled it and soldered it.
The board wasn’t working for some reason, so I desoldered all the components and redid the whole thing. I failed to notice that there was a short caused by a fail during the milling. Unfortunately I have no pictures of the bare trace but I fixed manually with a box cutter and it solved the problem.
However, when it came uploading the code, the board would only respond in a single led and brefly at that.
After deleting and re-uploading the code several times in a different computer it worked perfectly, so it remains unclear what was failing.