LED Matrix Shift Delay

0

Estoy haciendo un diseño de matriz LED de 16 filas X 32 columnas basado en PIC MCU & La multiplexación de la pantalla se realiza en el ISR. A una velocidad de 1 ms Tengo acceso al ISR & actualizar cada fila en cada interrupción. Para un marco, tomará 1 ms X 16 = 16 ms.

En el código principal hago patrones de movimiento (Ej .: letras en movimiento). Tengo un tiempo de fotograma de 16mS. Si quiero hacer una animación como, por ejemplo, quiero mover un personaje de la pantalla de derecha a izquierda, necesito un retraso de desplazamiento (en mis palabras, el llamado retraso de animación).

Genero este retraso al contar los fotogramas. Por ejemplo, utilizo un retardo de 48 ms que es 3 veces el tiempo de fotograma.

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);

Lo anterior desplazará una imagen 5 pasos a la izquierda. Vea la imagen adjunta. Estoy moviendo la letra "A" a la izquierda, llamada animación.

El problema es que mientras se mueve veo varios LED que se mueven ligeramente. ¿Cómo superar la situación anterior?

    
pregunta Joseph143

1 respuesta

1

Eso se llama POV - Persistencia de la visión. La retina de su globo ocular retiene una imagen estática durante unos pocos milisegundos, incluso si la imagen se apagó en menos de un microsegundo. Esto es lo que hace que la televisión y las imágenes de películas parezcan moverse sin problemas. Cuanto más rápido se mueva la imagen, más borrosa aparecerá. Este es un problema común con todas las pantallas de "Times Square".

Cambiar la cantidad de tiempo que la imagen está encendida ayuda a reducir el desenfoque. Por ejemplo, en su código, cada imagen se ilumina durante 48 ms, y luego cambia casi instantáneamente a la siguiente posición. Si lo cambia para que cada posición se ilumine durante unos pocos milisegundos, entonces estará oscuro durante el resto de los 48 ms antes de que se mueva, esto reducirá la aparente falta de definición; La imagen tendrá un aspecto más estroboscópico. Pero una cura completa incluye mover las letras tan lentamente que el desenfoque es mínimo.

    
respondido por el AnalogKid

Lea otras preguntas en las etiquetas