How would I go about linking 4 tri-color 8x8 RGB matrices with shift registers? That sort of confuses me...
Edit:
It's the PWM with it that confuses me.
How would I go about linking 4 tri-color 8x8 RGB matrices with shift registers? That sort of confuses me...
Edit:
It's the PWM with it that confuses me.
Can you be a bit more specific about what you want (I have seen the previous thread so I know it is a daft punk helmet) but are you wanting individual brightness control over each colour segment of each LED? If you do that pushes up the complexity quite a bit.
I thought writing the shift registers fast enough could emulate PWM?
It will but you are trying to multiplex the output at the same time.
Also if you need brightness lets say you need one byte to store the brightness of each LED so that's 8 * 8 * 4 * 3 = 768 bytes of memory you need. The standard arduino has only 1K in total so asking for that much memory is pushing it a bit.
Also if you are using a shift register to generate PWM then you have to be able to define the pulse width to say 256 divisions. So for each normal multiplex scan you have to be 256 times faster to accommodate the PWM from the shift register.
So lets assume you light one row at a time. That row will contain 8 * 4 * 3 LEDs that's 96 LEDs or a 96 stage shift register. To stop it from flickering it has to flash 32 times every second. So that's 32 * 96 = 3074 times a second you have to fill your shift register. If you want to PWM it then you need 256 writes for every multiplex write.
That's 3074 * 256 = 786944 times a second. Then you don't have just one row but 8 of them so:-
786944 * 8 = 6295552 times a second or just over 6 MHz.
The arduino has a clock frequency of 16MHz so you have 2.6 clock cycles to do each operation.
Time is not on your side here. It can't be done. You will need to look at hardware support in the form of multiplexing LED drivers.
Woah, that's a lot of info. I guess I might look into multiplexing LED drivers.