import machine
import time
from machine import Pin, I2C, SPI
from ssd1306 import SSD1306_I2C
from max7219 import Matrix8x8
# Configuración I2C (Pantalla OLED)
i2c = I2C(0, scl=Pin(25), sda=Pin(26))
oled = SSD1306_I2C(128, 64, i2c)
# Configuración del bus SPI (Matriz LED)
spi = SPI(1, baudrate=10000000, polarity=0, phase=0, sck=Pin(18), mosi=Pin(23))
cs = Pin(5, Pin.OUT)
matrix = Matrix8x8(spi, cs, 1)
# Configuración inicial
figuras_comidas = 0
pacman_positions = [(0, 0), (2, 0), (4, 0), (6, 0)] # Posiciones del Pac-Man
def draw_pacman(x, y):
matrix.fill(0)
matrix.fill_rect(x, y, 6, 6, 1)
matrix.fill_rect(x+2, y+2, 4, 2, 0) # "Boca" del Pac-Man
matrix.show()
def draw_figure(x, y):
matrix.fill_rect(x, y, 3, 3, 1)
matrix.show()
def update_oled():
oled.fill(0)
oled.text(f"Figuras: {figuras_comidas}", 0, 0)
oled.show()
def show_filled_message():
oled.fill(0)
oled.text("Lleno", 0, 0)
oled.show()
def countdown():
for i in range(5, 0, -1):
matrix.fill(0)
matrix.text(str(i), 0, 0)
matrix.show()
time.sleep(1)
matrix.fill(0)
matrix.show()
def end_message():
oled.fill(0)
oled.text("Finalizado", 0, 0)
oled.show()
def main():
global figuras_comidas
update_oled()
while figuras_comidas < 5:
for pos in pacman_positions:
draw_pacman(pos[0], pos[1])
time.sleep(0.5)
draw_figure(pos[0] + 8, pos[1])
time.sleep(0.5)
if pos[0] + 8 == 8: # Simula que el Pac-Man se come la figura
figuras_comidas += 1
update_oled()
if figuras_comidas >= 5:
show_filled_message()
matrix.fill(0)
matrix.show()
time.sleep(2)
countdown()
end_message()
return
main()