import machine
import time
from rtttl import play
buzzer = machine.PWM(machine.Pin(15))
filas = [machine.Pin(i, machine.Pin.IN, machine.Pin.PULL_DOWN) for i in range(2, 6)]
columnas = [machine.Pin(i, machine.Pin.OUT) for i in range(6, 9)] # Solo 3 columnas
# Mapa de teclas para teclado 4x3
teclado = [
['1', '2', '3'],
['4', '5', '6'],
['7', '8', '9'],
['*', '0', '#']
]
# Canciones asociadas
canciones = {
"1":"Titanic:d=4,o=6,b=40:32c#.6,32d#.6,4f6,32d#.6,32c#.6,32d#.6,32g#.6,8g#.6,32f#.6,32f.6,16c#.6,8a#.5,32g#.5,32f#.5,32d#5,32f5,8d#.5,32c#.6,32d#.6,4f6,32d#.6,32c#.6,32d#.6,32g#.6,8g#.6,32f.6,32g#.6,8a#.6,8g#.6,32d#6,32f6,8d#.6",
"2": "TakeOnMe:d=4,o=4,b=160:8f#5,8f#5,8f#5,8d5,8p,8b,8p,8e5,8p,8e5,8p,8e5,8g#5,8g#5,8a5,8b5,8a5,8a5,8a5,8e5,8p,8d5,8p,8f#5,8p,8f#5,8p,8f#5,8e5,8e5,8f#5,8e5,8f#5,8f#5,8f#5,8d5,8p,8b,8p,8e5,8p,8e5,8p,8e5,8g#5,8g#5,8a5,8b5,8a5,8a5,8a5,8e5,8p,8d5,8p,8f#5,8p,8f#5,8p,8f#5,8e5,8e5",
"3": 'Super Mario - Main Theme:d=4,o=5,b=125:a,8f.,16c,16d,16f,16p,f,16d,16c,16p,16f,16p,16f,16p,8c6,8a.,g,16c,a,8f.,16c,16d,16f,16p,f,16d,16c,16p,16f,16p,16a#,16a,16g,2f,16p,8a.,8f.,8c,8a.,f,16g#,16f,16c,16p,8g#.,2g,8a.,8f.,8c,8a.,f,16g#,16f,8c,2c6',
"4": "korobyeyniki:d=4,o=5,b=160:e6,8b,8c6,8d6,16e6,16d6,8c6,8b,a,8a,8c6,e6,8d6,8c6,b,8b,8c6,d6,e6,c6,a,2a,8p,d6,8f6,a6,8g6,8f6,e6,8e6,8c6,e6,8d6,8c6,b,8b,8c6,d6,e6,c6,a,a",
"5": "The_Simpsons:d=4,o=5,b=160:c.6,e6,f#6,8a6,g.6,e6,c6,8a,8f#,8f#,8f#,2g,8p,8p,8f#,8f#,8f#,8g,a#.,8c6,8c6,8c6,c6",
"6": "HarryPotter:d=4,o=5,b=100:8e6,8g6,8f#6,8e6,8b,8d6,8c#6,8a,8e6,8g6,8f#6,8e6,8b,8d6,8e6,2a",
"7": "MissionImp:d=16,o=6,b=95:32d,32d#,32d,32d#,32d,32d#,32d,32d#,32d,32d,32d#,32e,32f,32f#,32g,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,a#,g,2d,32p,a#,g,2c#,32p,a#,g,2c,a#5,8c,2p,32p,a#5,g5,2f#,32p,a#5,g5,2f,32p,a#5,g5,2e,d#,8d",
"8": "Entertainer:d=4,o=5,b=140:8d,8d#,8e,c6,8e,c6,8e,2c.6,8c6,8d6,8d#6,8e6,8c6,8d6,e6,8b,d6,2c6,p,8d,8d#,8e,c6,8e,c6,8e,2c.6,8p,8a,8g,8f#,8a,8c6,e6,8d6,8c6,8a,2d6",
"9": "doom:b=420,o=4,d=32:8g4,8e4,8b3,8e4,8g4,8e4,8g4,8b4,8g4,8e4,8g4,8e4,8g4,8b4,8e5,8g5,8e3,8p,8e3,8p,4e,8e3,8p,8e3,8p,4d,8e3,8p,8e3,8p,4c,8e3,8p,8e3,8p,4a#3,8e3,8p,8e3,8p,4b3,4c,8e3,8p,8e3,8p,4e,8e3,8p,8e3,8p,4d,8e3,8p,8e3,8p,4c,8e3,8p,8e3,8p,1a#3",
"0":"Mozart:d=16,o=5,b=125:16d#,c#,c,c#,8e,8p,f#,e,d#,e,8g#,8p,a,g#,g,g#,d#6,c#6,c6,c#6,d#6,c#6,c6,c#6,4e6,8c#6,8e6,32b,32c#6,d#6,8c#6,8b,8c#6,32b,32c#6,d#6,8c#6,8b,8c#6,32b,32c#6,d#6,8c#6,8b,8a#,4g#,d#,32c#,c,c#,8e,8p,f#,e,d#,e,8g#,8p,a,g#,g,g#,d#6,c#6,c6,c#6,d#6,c#6,c6,c#6,4e6,8c#6,8e6,32b,32c#6,d#6,8c#6,8b,8c#6,32b,32c#6,d#6,8c#6,8b,8c#6,32b,32c#6,d#6,8c#6,8b,8a#,4g#"
}
def leer_teclado():
while True:
for col_index, col_pin in enumerate(columnas):
col_pin.on()
time.sleep(0.01)
for fila_index, fila_pin in enumerate(filas):
if fila_pin.value():
tecla = teclado[fila_index][col_index]
print(f"Tecla presionada correctamente: {tecla}")
if tecla in canciones:
print(f"Reproduciendo {canciones[tecla]}")
play(canciones[tecla])
time.sleep(0.3)
col_pin.off()
leer_teclado()