Hi Team, I am working on learning how to charlieplex to build homemade displays (next, I'll work on using MAX7219's, but charlieplexing seems simpler to start with). I have built my first matrix, a simple 3x3 square. I am controlling 9 LED's with 6 pins, the columns are the anodes and the rows are the cathodes. I can't seem to control the device. I can test each individual pin by connecting the respective column to pin 13, and the row to GND and running blink. However, when I try to control them using code, nothing happens. I have a simple code here that was intended to simply flash the top left LED, but nothing happens. Can you help me figure out why?

Note that they all have to be outputs otherwise there is nothing to sink the current.

Charliplexing works with a combination of output/high output/low and input (high impedance).

As I recall you make a column output/high and the rows output/low, and the other columns input, to make a particular junction light up. Or reverse the low/high to make the other LED (wired the other way around) to light up.

Please post technical questions on the forum, not by personal message. Thanks!

So would it be better for me to learn charlieplexing using something like the LoL Shield?

It would be better to learn charlieplexing by understanding its underlying principles.

Based on what you say in your posts, you seem to be confusing a charlieplexed array with an LED matrix. Maybe a matrix was what you intended to use?

In a matrix arrangement, the canonical method is to drive a column pin to its active state, leaving all the other column pins inactive, and then drive the row pins of the LEDs you intend to light to their active state, illuminating some of the LEDs in a single column simultaneously. Naturally, the roles of the rows and columns can be exchanged, and maybe you want to illuminate only one LED at a time - if one of those is what you want to do, then your code just needs to reflect it.

In a charliplexed arrangement, only one LED is illuminated at a time. The pin connected to that LED's anode is driven high, the pin connected to its anode is driven low, and all of the other pins are configured as inputs. The wiring is a lot more complex than a a matrix scheme - and, for all but a few trivial applications, the code is a whole lot more complex - and there's often not a natural one-to-one correspondence between a particular LED's location in the display and the pins that activate it. But, it'll address more LEDs than a matrix arrangement with the same number of pins.

The explanation of how charlieplexing works is long and complicated; I'm not inclined to reproduce it here, since I'm not entirely sure that charlieplexing is what you intended, and it's already described in many places on the Internet. I'll suggest the Wikipedia article on charlieplexing, and the resources that it references. There are oodles of descriptions of LED matrix arrangements on the web; google away.