Hi, I'm trying to work out a solution for multiplexing a small RGB LED array. The size constraints are very tight (maybe 5x5mm).
Charlieplexing would be the obvious choice regarding minimization of IO pins, but it does constrain the mixing of colors (since each color LED can only be ON or OFF, no easy way to use PWM to mix). This is also a very power-limited project, so I want to minimize CPU time.
Standard matrix multiplexing seems like a better approach. While occupying more IO pins, the brightness of each LED should be controllable via PWM (apply positive voltage to a row and pulse the corresponding column to light up an LED). The idea is to set up a timer that wakes the device up with a certain interval (depending on number of LEDs), and cycle through the rows and columns.
I'm aiming for maybe a 5x4 matrix (40 RGB LEDs, 120 LEDs total), requiring 22 IO pins by standard matrix multiplexing (10x12 matrix). 12-16 channel PWM LED driver chips seem to be commonly found, so two chips required.
So I guess my questions are:
- Does this seem reasonable?
- Which low-power, small footprint PWM driver chips are available?
- Will the multiplex PWM multiplex method introduce any obvious issues?
- If I accept only being able to mix a few colors (Red, Green, Blue, Red+Green, Red+Blue, Green+Blue), what are my options in external ICs, since the micro I'm using doesn't really have tri-state GPIOs?