from machine import ADC, Pin, PWM # Importa módulos para manejar entradas analógicas, pines digitales y PWM
import time
# ------------------------
# Configuración del LDR
# ------------------------
ldr = ADC(Pin(34)) # Usa el pin 34 como entrada analógica para el LDR (sensor de luz)
ldr.atten(ADC.ATTN_11DB) # Ajusta la ganancia para leer hasta 3.3V (rango completo del ESP32)
# ------------------------
# Configuración del buzzerrr
# ------------------------
buzzer = PWM(Pin(25)) # Conecta un buzzer al pin 25 usando señal PWM (modulación por ancho de pulso)
buzzer.duty(0) # duty(0): no envía señal, el buzzer está apagado
# ------------------------
# led amarillo
# ------------------------
ledAmarillo=Pin(33, Pin.OUT)
# ------------------------
# Función para controlar el buzzer según la luz
# ------------------------
def controlbu(valor):
if valor > 3000 and valor < 4000:
buzzer.freq(500) # freq(500): frecuencia de 500 Hz → sonido más grave
buzzer.duty(512) # duty(512): ciclo de trabajo (50% si el rango es 0–1023)
ledAmarillo.value(1)
elif valor >= 2000 and valor <= 3000:
buzzer.freq(1000) # frecuencia media: 1000 Hz
buzzer.duty(512) # misma intensidad de señal (50%)
ledAmarillo.value(0)
elif valor < 2000:
buzzer.freq(2000) # frecuencia alta: 2000 Hz → sonido más agudo
buzzer.duty(512) # misma potencia
ledAmarillo.value(0)
else:
buzzer.duty(0) # Si el valor no entra en ningún rango, apaga el buzzer
ledAmarillo.value(0)
# ------------------------
# Bucle principal
# ------------------------
while True:
valor = ldr.read() # Lee el valor de luz (0 a ~4095)
print("La cantidad de luz es ... ")
print(valor) # Muestra el valor por el monitor serial
controlbu(valor) # Llama a la función que ajusta el buzzer según la luz
time.sleep(0.5) # Espera medio segundo