Hi, all!
When I went looking for a library to help with charlieplexing an array of LEDs, I couldn't find one that supported larger numbers of LEDs, while making it simple to address each LED. So I wrote one. I'm calling it ChuckPlex, and I hope others will find it as useful as I do.
It can help you configure your array: telling you how many pins you will need for a particular number of nodes and how to wire them. It addresses nodes by index, hiding the HIGHs, LOWs, INPUTs and OUTPUTs. It supports using as many pins as you can spare, allowing over a hundred LEDs on most boards, or thousands on the Mega. If the chosen pins are PWM pins, it supports writing analog values in addition to digital ones.
Some example code:
#include <ChuckPlex.h>
int pins[] = {2,3,4,5};
ChuckPlex plex = ChuckPlex(pins,4);
void setup(){
 // no setup!
}
// blink the fourth led in the array
void loop(){
 // light the fourth led
 plex.enable(4);
 delay(1000);
 // turn off all leds
 plex.clear();
 delay(1000);
}
Please try it out if you are inclined, and I would love to hear feedback!
latest version: ChuckPlex v1.0.1