I need some advice on how to drive a 10x10x10 RGB LED cube. It basically comes down to 300 pins multiplexed 10 times for the 10 layers. My first thought was to use TLC5940's, but I tried a simple test of just turning all the pins on one on and off as fast as I could. However, there was noticeable flickering in the LED's, so I'm having my doubts. If I can't even achieve persistence of vision on 16 pins, how could I possibly do it with 300 multiplexed 10 times? Here's the code I used for reference (Note I was using a Teensy++2.0):
void loop()
{
int i = 0;
while(1){
//Tlc.clear();
if(i == 1){
Tlc.set(1, 4095);
Tlc.set(2, 4095);
Tlc.set(3, 4095);
Tlc.set(4, 4095);
Tlc.set(5, 4095);
Tlc.set(6, 4095);
Tlc.set(7, 4095);
Tlc.set(8, 4095);
Tlc.set(9, 4095);
Tlc.set(10, 4095);
Tlc.set(11, 4095);
Tlc.set(12, 4095);
Tlc.set(13, 4095);
Tlc.set(14, 4095);
Tlc.set(15, 4095);
i = 0;
}else{
Tlc.set(1, 0);
Tlc.set(2, 0);
Tlc.set(3, 0);
Tlc.set(4, 0);
Tlc.set(5, 0);
Tlc.set(6, 0);
Tlc.set(7, 0);
Tlc.set(8, 0);
Tlc.set(9, 0);
Tlc.set(10, 0);
Tlc.set(11, 0);
Tlc.set(12, 0);
Tlc.set(13, 0);
Tlc.set(14, 0);
Tlc.set(15, 0);
i=1;
}
Tlc.update();
//delay(300);
}
}
Is there a way to speed things up here, or should I scrap the TLC5940's entirely for something else? I've heard about other people using shift registers, would that be fast enough?