loading
edit: Wow, this won an awesome prize! Very many thanks guys!

Charlieplexing (http://wealoneonearth.blogspot.nl/2013/03/design-note-charlieplexing-led-matrices.html) is a powerful method for driving a large number of LEDs from a relatively small amount of IO pin and without using any extra components. The technique makes use of the fact that a LED will only let current through in one direction. So if you connect two LEDs to two IO pins, both reversed in direction, you can make the first LED light up by making one pin low and the other high. To make to other LED light, make the pin low which was high first and vice versa. Adding more LEDs to the system, you will be able to drive x2-x LEDs, where x is the number of IO pins you are using. So using 3 pins, you can use (32-3=9-3=) 6 LEDs, and using 9 pins, this increases to (92-9=81-9=) 72 LEDs.
Wanting to figure out how this method worked, but not having the parts around, I used the 123D Circuit  website to make a simulation. Added bonus is that I could easily turn the simulation into a PCB for the production of an Arduino shield. The shield can be used as a simple display with 8x8 pixels. I wrote the software so that you can animate the frames yourself in binary code. Check it out in the following video. The blinking of the LEDs unfortunately is very faint in the software, but you’ll see it if you look closely.

See the schematics and simulation here: http://123d.circuits.io/circuits/102918-charlieplexed-arduino-8x8-led-grid-display-shield


Step 1: Make the (breadboardless) circuit

As described in the charlieplexing article  a specific wiring is needed to get the right effect. First Arduino pin goes to all the – pins of the LEDS on the first row, the + pins of these LEDs go to Arduino pin 2, 3, 4 etc. The second Arduino pin goes to all the – pins of the LEDS on the second row, the + pins of these LEDs go to Arduino pin 1, 3, 4 etc. And so on for all the other pins.

First add the nine current limiting resistors at the pins of the Arduino. In the software I gave them a value of 100 Ohm, but in reality, 10 Ohm or even no resistor is preferred. This is because each LED will flash only very shortly, so it isn’t at much risk for burning up.

The work in 123D is very tedious, so after the resistors start with duplicating a whole lot of LEDs in a grid. I started with red LEDs, but later on I found that the blinking of green was more visible in the software, so I changed them all.

With the leds in place, start wiring. This needs to be done very neatly, or else you will lose track of everything. I started with all the direct connections of each resistor horizontally, followed by the connections vertically.

With this done, we can work on the code!
<p>The guitar in my profile photo has a touchscreen with an 8 x 8 LED matrix in it. I used a LED driver IC but it made to much noise. I'm going to have to try this. </p><p>https://www.youtube.com/watch?v=Vi8qMpJmPHE at 26 seconds in</p>
<p>Each 'column-pin' (the +) connects to all the other pins (the -) for each row.</p><p>Imagine the 'column-pin' is the one in braces:</p><p>(1)2 3 4 5 6 7 8 9</p><p>1(2)3 4 5 6 7 8 9</p><p>1 2(3)4 5 6 7 8 9</p><p>1 2 3(4)5 6 7 8 9</p><p>1 2 3 4(5)6 7 8 9</p><p>1 2 3 4 5(6)7 8 9</p><p>1 2 3 4 5 6(7)8 9</p><p>1 2 3 4 5 6 7(8)9</p><p>I hope this clarifies it a bit!</p>
<p>This is great except for your schematic. The way you explain to wire it you only need to use 8 pins, yet you use 9 pins. You explained it like this, </p><p><em>First Arduino pin goes to all the &ndash; pins of the LEDS on the first row, the + pins of these LEDs go to Arduino pin 2, 3, 4 etc. The second Arduino pin goes to all the &ndash; pins of the LEDS on the second row, the + pins of these LEDs go to Arduino pin 1, 3, 4 etc. And so on for all the other pins.</em></p><p>What does the 9th pin connect to?</p><p>Please explain in more detail how all the LEDs are wired. </p>
<p>This seems like a really awesome project - do you have plans to construct it?</p><p>Thanks!</p><p>Audrey</p>

About This Instructable

33,866 views

299 favorites

License:

Bio: I'm a Dutch guy doing things with music and technology. At the moment I'm finishing my MSc in Industrial Design. Not limiting myself ... More »
More by ArvidJense: Water Organ 3d Printing Musical Instruments Cookie CNC Spirograph from Trash
Add instructable to: