from machine import Pin, PWM
import time
# Definir los pines de los botones
PINES_BOTONES = [18, 12, 13, 14, 15, 4, 5]
# Definir el pin del parlante
pin_PARLANTE = 25
# Crear una lista de objetos Pin para cada botón, configurados como entradas con resistencia de pull-up
botones_oprimidos = [Pin(pin, Pin.IN, Pin.PULL_UP) for pin in PINES_BOTONES]
# Crear un objeto PWM para el pin del parlante
pin_PARLANTE_pwm = PWM(Pin(pin_PARLANTE))
# Definir las frecuencias de las notas del piano
frecuencias_piano = [261.63, 293.66, 329.63, 349.23, 392.00, 440.00, 493.88]
# Función para reproducir una frecuencia en el parlante
def reproducir(frecuencia):
# Establecer la frecuencia del PWM
pin_PARLANTE_pwm.freq(int(frecuencia))
# Establecer el ciclo de trabajo del PWM para activar el parlante
pin_PARLANTE_pwm.duty(512)
# Esperar medio segundo
time.sleep(0.5)
# Establecer el ciclo de trabajo a 0 para desactivar el parlante
pin_PARLANTE_pwm.duty(0)
# Bucle infinito
while True:
# Leer el estado de cada botón
estados_botones = [boton.value() for boton in botones_oprimidos]
# Iterar sobre cada estado de botón
for i, estado in enumerate(estados_botones):
# Si el botón está presionado (estado == 0)
if estado == 0:
# Imprimir qué botón está presionado
print("Botón {} presionado!".format(i+1))
# Reproducir la frecuencia correspondiente al botón
reproducir(frecuencias_piano[i])
# Esperar 0.1 segundos antes de la siguiente iteración del bucle
time.sleep(0.1)