problema con la matriz de LED y la frambuesa pi

3

Tengo un modelo B + de frambuesa pi y una matriz de un solo color de 8x8 LED. Conecté 8 pines GPIO a los 8 pines fila de la matriz y otros 8 pines GPIO a los 8 pines de columna. Tenga en cuenta que soy un principiante en esto, así que tenga algunas preguntas. En algunas pruebas he observado que si asigno Vcc (ALTO) a las filas y tierra (BAJA) a la columna, el LED se enciende.

def enlight(i, j):
    GPIO.output(row[i],GPIO.HIGH)
    GPIO.output(col[j],GPIO.LOW)

Si quiero que se ilumine el LED de la coordenada (2,3), establecería row2 en ALTO y col3 en BAJO.

El problema surge en el siguiente escenario. Quiero que dos LEDS, es decir, (0,0) y (1,1) , se enciendan a la vez.

    enlight(0,0)
    enlight(1,1) 

pero en lugar de solo estos dos, tengo dos LED más encendidos, es decir, (0,1) y (1,0) ; lo cual es bastante razonable porque estoy configurando row0 y row1 HIGH y col0 y col1 LOW. Entonces, estos 2 pares de filas y columnas se intersecarán en 4 puntos, por lo que cuatro puntos se iluminarán. Para evitar esto, creé una función delight() que básicamente hace lo contrario a enlight() , es decir, configurando la fila en BAJA y col en ALTA, apagando el LED. Para encender ambos (0,0) y (1,1) a la vez, sin ningún otro LED encendido, lo ordeno a:

while true:
    enlight(0,0)
    delight(0,0)
    enlight(1,1)
    delight(1,1)

Por esto, se produce un bucle infinito y (0,0) el LED parpadea infinitamente y justo en el momento (0,0) el LED se apaga, el LED (1,1) se enciende. Todo esto sucede tan rápido que el ojo humano no puede distinguir el parpadeo y en su lugar ve los dos LED encendidos constantemente.

Mi pregunta es: ¿es este " truco " realmente un buen truco? ¿Es así como se realizan los principales programas relacionados con la matriz LED? ¿O hay alguna otra forma de hacerlo? Si hay, por favor explique en términos simples.

    
pregunta shiladitya basu

2 respuestas

2
  

Mi pregunta es: ¿Es este "truco" realmente un buen truco? ¿Es así como se realizan los principales programas relacionados con la matriz LED? o hay alguna otra manera de hacerlo? Si la hay, explique con sencillez.

Has hecho lo que se llama Escaneando una pantalla multiplexada. Debido al pin compartido Configuración de columnas y filas de una matriz, lo encontrará fantasmas si se habilitan varios pines al mismo tiempo. Esto se denomina Fantasma y ocurre no solo en matrices de pantallas LED simples, sino en pantallas multiplexadas, pantallas LCD, incluso teclados ( Artículo de Microsoft sobre el fantasma del teclado )

  

"Fantasma" es el problema de que algunas teclas del teclado no funcionan cuando se presionan varias teclas simultáneamente. Las pulsaciones de teclas que no aparecen en la computadora o que parecen haber desaparecido se dice que han sido "fantasmas". En la mayoría de los teclados, incluso algunos que se comercializan explícitamente como "Anti-Ghosting", esto ocurre con muchas combinaciones de tres teclas.

Tu Trick , como se mencionó, se llama escaneo. Al alternar qué fila y columna están activadas, de modo que solo una está activada en un momento dado, no hay conflicto. Si se hace más rápido de lo que la visión humana puede procesar (30 veces por segundo (Hertz o Hz) si no mueven sus ojos / cabezas, pero son más suaves a 60 Hz y se recomiendan más rápido que 100 Hz), aproveche el fenómeno llamado < fuerte> Persistencia de la visión . Su truco es cómo se manejan todas las pantallas multiplex, con algunas variaciones.

Una nota de aplicación de un productor de semiconductores líder sobre cómo evitar el efecto fantasma y otros problemas comunes . está dirigido a ingenieros profesionales, pero es muy informativo si desea obtener más información.

Una alternativa a hacer esto directamente, en su código, o incluso en los controladores, ya que el sistema operativo para el RPI podría bloquear el acceso debido al uso de la CPU, está descargando esto a un IC controlador de pantalla LED dedicado. La única diferencia es que el IC se desarrolló para hacer el mismo escaneo de manera más eficiente, liberando a su procesador principal de tener que realizar un seguimiento de la pantalla.

Además, el RPI no está diseñado para conducir mucha corriente en sus pines GPIO. Una pantalla más grande, o una que tenga LED que requieran más corriente, no funcionará bien. Los CI del controlador de pantalla LED tienden a admitir una corriente mucho más alta que el máximo de 16 mA por pin del RPI. Pero su ejemplo de una pantalla de 8x8 en un solo color con solo 1 led encendido a la vez estará bien.

    
respondido por el Passerby
0

Sí, así es como se hace.
Por supuesto, cuantas más filas tenga en su matriz, menos tiempo pasará cada uno con los LED encendidos, por lo que tendrá que compensar aumentando la corriente con la que los conduce para que no aparezcan tenues. Esto es cuando deberá comenzar a buscar en los circuitos integrados de controlador de LED "adecuados" porque alcanzará rápidamente el límite de la cantidad de RPI que puede fuente / disipar en sus puertos IO.

    
respondido por el brhans

Lea otras preguntas en las etiquetas