# Importación de las bibliotecas necesarias
from machine import Pin, PWM # Pin para controlar los pines GPIO y PWM para controlar el buzzer
from utime import sleep, sleep_ms # Funciones de tiempo (no se usan en este código, pero pueden ser útiles)
# Configuración del buzzer en el pin 15 usando PWM
sound = PWM(Pin(15))
# Configuración de los botones en modo entrada con resistencia pull-up
# Cada botón está asociado con una nota musical específica
do = Pin(2, Pin.IN, Pin.PULL_UP) # Botón para la nota Do
re = Pin(4, Pin.IN, Pin.PULL_UP) # Botón para la nota Re
mi = Pin(16, Pin.IN, Pin.PULL_UP) # Botón para la nota Mi
fa = Pin(17, Pin.IN, Pin.PULL_UP) # Botón para la nota Fa
sol = Pin(5, Pin.IN, Pin.PULL_UP) # Botón para la nota Sol
la = Pin(18, Pin.IN, Pin.PULL_UP) # Botón para la nota La
si = Pin(19, Pin.IN, Pin.PULL_UP) # Botón para la nota Si
DO = Pin(21, Pin.IN, Pin.PULL_UP) # Botón para la nota Do (octava superior)
# Frecuencias de las notas musicales en Hertz (Hz) correspondientes a la escala Do, Re, Mi, etc.
notas = [261, 293, 329, 349, 392, 440, 493, 523] # Notas de la escala (Do, Re, Mi, Fa, Sol, La, Si, Do)
# Bucle infinito para detectar la interacción con los botones y generar sonidos
while True:
print(re.value())
# Si el botón "Do" (botón conectado al pin 2) está presionado
if do.value() == 0:
sound.freq(261) # Ajusta la frecuencia del buzzer a 261 Hz (nota Do)
sound.duty(1023) # Ajusta el ciclo de trabajo del PWM al máximo para generar sonido
# Si el botón "Re" (botón conectado al pin 4) está presionado
elif re.value() == 0:
sound.freq(293) # Ajusta la frecuencia del buzzer a 293 Hz (nota Re)
sound.duty(1023) # Genera sonido
# Si el botón "Mi" (botón conectado al pin 16) está presionado
elif mi.value() == 0:
sound.freq(329) # Ajusta la frecuencia a 329 Hz (nota Mi)
sound.duty(1023) # Genera sonido
# Si el botón "Fa" (botón conectado al pin 17) está presionado
elif fa.value() == 0:
sound.freq(349) # Ajusta la frecuencia a 349 Hz (nota Fa)
sound.duty(1023) # Genera sonido
# Si no se presiona ningún botón
else:
sound.freq(1) # Ajusta la frecuencia a 1 Hz, lo que es esencialmente silencio
sound.duty(0) # Apaga el buzzer configurando el ciclo de trabajo a 0 (sin sonido)
# El código sigue verificando continuamente si un botón está presionado
# y reproduce la nota musical correspondiente en el buzzer.