from machine import Pin, PWM, ADC
import utime
# Pin Setup
ldr = ADC(28) # Pin AO dari LDR ke GP28
led = Pin(6, Pin.OUT) # LED merah ke GP6
buzzer = PWM(Pin(15)) # Buzzer ke GP15 (PWM)
# Konfigurasi buzzer
buzzer.freq(1000)
buzzer.duty_u16(0) # Mulai dalam keadaan mati
# Fungsi konversi ADC ke lux
def adc_to_lux(adc_value):
return (adc_value / 65535) * 900 + 10 # Estimasi 10-1000 lux
# Baca nilai normal awal sebagai baseline pencahayaan
print("Mengukur pencahayaan normal...")
utime.sleep(2) # Waktu stabilisasi
lux_normal = adc_to_lux(ldr.read_u16())
print("Nilai lux normal:", lux_normal)
while True:
analog_value = ldr.read_u16()
lux = adc_to_lux(analog_value)
print("Lux sekarang:", lux)
if lux > lux_normal + 250:
print("Terdeteksi cahaya terang! Menyalakan LED & buzzer.")
start_time = utime.ticks_ms()
buzzer.duty_u16(int(65535 * 0.45)) # Duty cycle 45%
while utime.ticks_diff(utime.ticks_ms(), start_time) < 4000:
led.toggle()
utime.sleep(0.5) # LED berkedip tiap 0.5 detik
# Matikan LED dan buzzer setelah 4 detik
led.value(0)
buzzer.duty_u16(0)
utime.sleep(0.2)