from machine import Pin, PWM, ADC
import utime
# Pin Setup
ldr = ADC(28) # Pin A0 dari LDR ke GP28
led = Pin(6, Pin.OUT) # LED Merah di GP6
buzzer = PWM(Pin(15)) # Buzzer di GP15 dengan PWM
# Konfigurasi awal buzzer
buzzer.freq(1000)
buzzer.duty_u16(0)
# Fungsi konversi ADC ke Lux
def adc_to_lux(adc_value):
return (adc_value / 65535) * 900 + 10 # Rentang kira-kira 10 - 1000 lux
# Kalibrasi nilai normal hanya sekali di awal
lux_normal = 0
# Loop utama
while True:
analog_value = ldr.read_u16()
lux = adc_to_lux(analog_value)
if lux_normal == 0:
lux_normal = lux
print(f"Lux Normal (kalibrasi awal): {lux_normal}")
print(f"LDR Value: {analog_value} | Lux: {lux}")
if lux > lux_normal + 100:
# Kondisi: Lebih terang 100 LUX dari normal
buzzer.duty_u16(int(65535 * 0.25)) # Duty cycle 25%
# LED berkedip selama 2 detik (dengan interval 200ms, total 10 kedipan)
for i in range(10):
led.toggle()
utime.sleep(0.2)
led.off()
buzzer.duty_u16(0) # Matikan buzzer
else:
led.off()
buzzer.duty_u16(0)
utime.sleep(0.2) # Delay pembacaan