This is the beginning of a post from about:Benjie. If you’ve written a blog post you think would be useful to SoutHACKton members, please get in touch!
I’m working on a new project, I’ve got a 8×8 dual colour dot matrix display (£2.50 delivered from Earthshine Design) and I want to power it from the Arduino. One way of making a chip like that (which has 2×8×8 = 128 LEDs) would be to have a common ground and an additional 128 pins – one for each LED. This, I think you’d agree, would be a nightmare, so instead they’ve basically gone for an 8×16 grid for a total of 24 pins. This raises two main problems:
- You can’t turn 2 arbitrary LEDs on at the same time unless they are on the same row/column. (Doing so would actually draw a square of LEDs.)
- My Arduino doesn’t have enough digital input/output pins
Point 1 is easily solved – we simply update just one row at a time, letting Persistance Of Vision (POV) do the hard work for us. Point 2 is the subject of this post – multiplexing, combining multiple individual signals into just one signal. I will not be using this dot matrix display in this post, instead I will simply be powering normal LEDs. I wanted to find out if the Arduino is fast enough to multiplex the data through just a few pins in order to power this display. The answer (one of my favourite answers!) is: “Yes, but not without some hacking.” Read on…