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 di GP6
buzzer = PWM(Pin(15)) # Buzzer di GP15 dengan PWM
# Konfigurasi PWM Buzzer
buzzer.freq(1000) # Frekuensi awal buzzer (1kHz)
buzzer.duty_u16(0) # Matikan buzzer di awal
# Fungsi konversi ADC ke Lux (kisaran 10 - 1000 lux)
def adc_to_lux(adc_value):
return (adc_value / 65535) * 900 + 10
# Variabel penyimpanan nilai normal
lux_normal = 0
normal_terbaca = False
while True:
analog_value = ldr.read_u16()
lux = adc_to_lux(analog_value)
if not normal_terbaca:
lux_normal = lux
normal_terbaca = True
print(f"Lux Normal Tersimpan: {lux_normal:.2f}")
print(f"Lux Sekarang: {lux:.2f}")
# Jika perbedaan lux lebih dari 250 dibanding nilai normal
if lux > lux_normal + 250:
print("Cahaya meningkat signifikan! Menyalakan LED & Buzzer")
buzzer.duty_u16(int(0.45 * 65535)) # 45% duty cycle ≈ 29490
buzzer.freq(1000)
# LED berkedip selama 4 detik (setiap 0.5 detik -> 8 kali)
for _ in range(8):
led.toggle()
utime.sleep(0.5)
# Matikan LED dan buzzer setelah 4 detik
led.off()
buzzer.duty_u16(0)
utime.sleep(0.2) # Delay kecil agar pembacaan tidak terlalu cepat