from machine import Pin, SPI
import max7219
import time
# --- Configuración SPI y matriz ---
spi = SPI(1, baudrate=10000000, polarity=0, phase=0,
sck=Pin(18), mosi=Pin(23), miso=Pin(19))
cs = Pin(5, Pin.OUT)
matriz = max7219.Matrix8x8(spi, cs, 1)
matriz.fill(0)
matriz.show()
while True:
# 1) DIAGONAL PRINCIPAL (PING-PONG: IDA Y VUELTA)
# ---- IDA (0,0) → (7,7) ----
for i in range(8):
matriz.fill(0)
matriz.pixel(i, i, 1)
matriz.show()
time.sleep(0.15)
time.sleep(0.3)
# ---- VUELTA (7,7) → (0,0) ----
for i in range(7, -1, -1):
matriz.fill(0)
matriz.pixel(i, i, 1)
matriz.show()
time.sleep(0.15)
time.sleep(0.4)
# 2) DIAGONAL INVERTIDA: (i, 7-i)
for i in range(8):
matriz.fill(0)
matriz.pixel(i, 7 - i, 1)
matriz.show()
time.sleep(0.15)
time.sleep(0.4)
# 3) DOS DIAGONALES A LA VEZ
for i in range(8):
matriz.fill(0)
matriz.pixel(i, i, 1)
# diagonal principal
matriz.pixel(i, 7 - i, 1)
matriz.show()
time.sleep(0.15)
time.sleep(0.4)
# diagonal inversa
# 4) DESPLAZAMIENTO HORIZONTAL (animación avanzada)
# Se mueve la diagonal principal hacia la derecha y luego hacia la izquierda
# ---- mover de izquierda a derecha ----
for offset in range(0, 6):
matriz.fill(0)
for i in range(8):
x = i + offset
y = i
if 0 <= x < 8:
# validar que no se salga
matriz.pixel(x, y, 1)
matriz.show()
time.sleep(0.15)
time.sleep(0.3)
# ---- mover de derecha a izquierda ----
for offset in range(5, -1, -1):
matriz.fill(0)
for i in range(8):
x = i + offset
y = i
if 0 <= x < 8:
matriz.pixel(x, y, 1)
matriz.show()
time.sleep(0.15)
time.sleep(0.5)