Tengo una raspberry pi modelo B+ y una matriz de 8x8 LEDs de un solo color. He conectado 8 pines GPIO a los 8 pines de fila de la matriz y otros 8 pines GPIO a los 8 pines de columna. Hay que tener en cuenta que soy un principiante en esto, así que tengo algunas dudas. He observado mediante unas pruebas que si asigno Vcc (HIGH) a las filas y tierra (LOW) a las columnas, el LED se enciende.
def enlight(i, j):
GPIO.output(row[i],GPIO.HIGH)
GPIO.output(col[j],GPIO.LOW)
Si quiero que se encienda el LED de la coordenada (2,3), pondría la fila2 en HIGH y la col3 en LOW.
El problema surge en el siguiente escenario. Quiero dos LEDs, es decir (0,0)
y (1,1)
para que se encienda de inmediato.
enlight(0,0)
enlight(1,1)
pero en lugar de sólo estos dos, tengo otros dos LEDs encendidos, es decir (0,1)
y (1,0)
lo cual es bastante razonable porque estoy estableciendo row0 y row1 HIGH y col0 y col1 LOW. Así que estos 2 pares de filas y columnas se van a cruzar en 4 puntos, por lo que se iluminan cuatro puntos. Para evitar esto, he creado un delight()
que básicamente hace lo contrario de enlight()
Es decir, poner la fila en LOW y la col en HIGH, apagando el LED. Para que se enciendan tanto (0,0) como (1,1) a la vez, sin que se encienda ningún otro LED, lo mando a:
while true:
enlight(0,0)
delight(0,0)
enlight(1,1)
delight(1,1)
De este modo, se produce un bucle infinito y el LED (0,0) parpadea infinitamente y justo en el momento en que el LED (0,0) 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 ambos LEDs constantemente encendidos.
Mi pregunta es, ¿es esto " truco "¿realmente es un buen truco? ¿Es así como se realizan los principales programas relacionados con la matriz LED? ¿O hay alguna otra forma de hacerlo? Si lo hay, por favor, explíquelo de forma sencilla.