from machine import Pin, PWM, ADC
import utime
# Setup pin
ldr = ADC(28) # Pin AO dari LDR ke GP28
led = Pin(6, Pin.OUT) # LED di GP6
buzzer = PWM(Pin(15)) # Buzzer di GP15 dengan PWM
# Konfigurasi PWM buzzer
buzzer.freq(1000)
buzzer.duty_u16(0)
# Fungsi sederhana ADC ke Lux
def adc_to_lux(adc_value):
# ADC 65535 (terang sekali), ADC 0 (gelap total)
# Buat mapping sederhana dari pengamatan eksperimen
return (65535 - adc_value) / 65535 * 1000 # Lux range 0-1000 (disesuaikan)
# Tentukan nilai normal 200 lux
lux_normal = 200
while True:
analog_value = ldr.read_u16()
lux = adc_to_lux(analog_value)
print(f"LDR Value: {analog_value} | Lux: {lux:.2f}")
if lux < lux_normal:
print("Cahaya lebih gelap dari 200 lux! Menyalakan LED & Buzzer...")
# Buzzer ON 55%
buzzer.duty_u16(int(0.55 * 65535))
start_time = utime.ticks_ms()
while utime.ticks_diff(utime.ticks_ms(), start_time) < 5000: # selama 5 detik
led.toggle()
utime.sleep(0.5) # LED kedip tiap 0.5 detik
# Matikan semua setelah 5 detik
buzzer.duty_u16(0)
led.off()
else:
buzzer.duty_u16(0)
led.off()
utime.sleep(0.2)