Charlieplexing is a technique proposed in early 1995 by Charlie Allen at Maxim Integrated for driving a multiplexed display in which relatively few I/O pins on a microcontroller are used to control an array of LEDs.
According to Wikipedia, the method employs the tri-state logic capabilities of microcontrollers in order to gain efficiency over traditional multiplexing. Indeed, most Makers have likely encountered a project where multiple LEDs are required – with only a few wires.
As Ochâtelain notes in a recent Instructables post, Charlieplexing using an Atmel-based Arduino board may very well fit the bill.
“With only four wires you can drive 12 LEDs with only four resistors as an optional protection and without any ‘intelligent’ component like a 74595 or similar,” ochâtelain explains.
Recommended project components?
- 4 RGB LEDs (or 12 single color LEDs)
- Atmel-based Arduino board
- 4 resistors
- Breadboard
- 4 PIN male headers
Ochâtelain kicks off the project by prepping the stripboard.
“We will add a resistor to each strip, so just leave two rows in the beginning of the strips empty – one for the headers, one for the start of the resistor, cut (= isolate) on the third row of holes, the LED will be plugged starting from the forth row,” he writes.
“To simplify the bending, we mark the stripboard distance on every pin all LEDs. This way it is very easy to bend the pin the required strip. Please be aware to keep always the same ‘orientation’ of your LEDs. In this case Pin 3 is always the anode.”
Next, Ochâtelain defines the specific bending pattern and plugs the LEDs into the stripboard.
“Now comes the easy part: Just solder all the LED-PINs, then the 4 resistors (I first used 3k3 throughholes and then 0k5 SMDs) and the 4 header pins,” he adds.
“Keep a sharp eye on any short-circuit on the front and back side of the board.”
Last, Ochâtelain tests the system with a Charlieplexing Arduino sketch. Interested in learning more about Charlieplexing with an Arduino? You can check out Ochâtelain’s Instructable page here.