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.