Tutoriales

PIC - Puerto serial por USB CDC - Matriz de LEDs

Matriz de LEDs

¿Cómo funciona la matriz de LEDs? Utiliza el método de persistencia de visión, o en inglés Persistance of Vision (POV).

 

Básicamente lo que hago es lo siguiente:

- Tengo 7 filas y 7 columnas, dando un total de 49 LEDs independientes.
- Cada fila y cada columna son controladas por un pin específico del PIC.
- Si yo quisiera prender todos los LEDs de la fila 0, entonces debo activar las 7 columnas y únicamente activar el MOSFET de la fila 0.
- IMPORTANTE: Jamás debe activarse más de un MOSFET a la vez ya que el efecto visual se perdería.
- Siguiendo esta lógica, no se deben prender más de 1 fila a la vez, pero ¿entonces cómo se logra dibujar 49 LEDs de forma independiente?

Nunca se logra.

Lo que se hace es:

- Activar los LEDs (columnas) de una fila en un instante
- Activar el MOSFET de esa fila
- Dejarlos activos por un brevísimo tiempo
- Apagar los LEDs (columnas)
- Apagar el MOSFET (fila)
- Y llevar a cabo la misma secuencia para la siguiente fila

Esto parece que generaría un efecto interrumpido de lo dibujado en la matriz, pero no lo es. El ojo humano no es capaz de distinguir cuando una fila está activa y las otras seis están apagadas, si la frecuencia de muestreo es suficientemente rápida.

El algoritmo de dibujado de la Matriz lo puedes encontrar en matrix.c. Te lo dejo de tarea. Igualmente puedes encontrar un algoritmo de rotación de matriz que implementé, que básicamente rota la matriz en 0°, 90°, 180° y 270°. Esto es útil para que ubiques tu tarjeta en la posición que mejor te guste. 

 

Código fuente PIC - Otras funciones

+ Dibuja un cuadro en bruto (DRAW_RAW_FRAME)

Con este comando puedes enviar datos en bits a apagar y prender desde la compu. Puedes dibujar lo que quieras. Lo he llegado a usar para hacer un analizador de frecuencias desde la compu, pero aún no está completamente terminado.



+ Establecer la hora en el reloj de tiempo real (SET_RTC)

Con este comando le pones la hora al PIC para usarlo como reloj de pared, es muy preciso Chulo.

+ Dibujar un número (DRAW_A_NUMBER)

Dibuja un número del 0 al 9 para probar la comunicación del PIC.

+ Dibuja la hora (DRAW_TIME)

Es el modo predeterminado del PIC. Básicamente por 2 segundos dibuja la hora

4:

y por otros 2 segundos dibuja los minutos

35

+ Establece la rotación (SET_ROTATION)

Define cómo dibujar los datos de la matriz: 0°, 90°, 180° y 270°.

+ Juego de la vida (GAME_OF_LIFE)

Es una implementación pobre que hice del juego de la vida, ya no me dio tiempo de acabarla. Si te interesa pulirla, no dudes en hacerlo. Sube tu código a GIT en cuanto lo logres y házmelo saber por favor.

 

Conectando por primera vez el PIC a la PC

Si estás en Windows, la compu te pedirá los drivers de instalación. Basta con indicar la ruta donde los siguientes archivos se encuentran guardados. Los puedes encontrar en el código fuente en GIT mencionado al principio del tutorial.

mchpcdc.cat
mchpcdc.inf