I’m doing a PIC MCU based 16 row X 32 column LED matrix design & the display multiplexing is done in the ISR. At 1mS rate I’m getting into the ISR & update each row on every interrupt. For a frame it will take 1mS X 16 = 16mS.
In the main code I do moving patterns (Ex: letters moving). I have a frame time of 16mS. If I want to do an animation like let say I want to move a character from display right to left I need a shift delay (in my words its called animation delay).
I generate this delay by counting frames.For example I use 48mS delay that is 3 times the frame time.
Left Shift(); ; make shift bits on display register (or in inactive buffer)
Delay(48mS); ; call a delay (shift delay)
Left Shift();
Delay(48mS);
Left Shift();
Delay(48mS);
Left Shift();
Delay(48mS);
Left Shift();
Delay(48mS);
The above will shift a picture 5 steps left.See the attached picture, I'm moving letter "A" to left called an animation.
The problem is while moving I see multiple LEDs moving slightly.How to overcome the above situation?