from machine import Pin, PWM, ADC
import utime
# Inisialisasi pin
ldr_sensor = ADC(28) # LDR analog di pin GP28
lampu_led = Pin(6, Pin.OUT) # LED merah di pin GP6
suara_buzzer = PWM(Pin(15)) # Buzzer PWM di pin GP15
# Konfigurasi awal buzzer
suara_buzzer.freq(1000)
suara_buzzer.duty_u16(0)
# Fungsi konversi nilai ADC menjadi lux
def konversi_adc_ke_lux(nilai_adc):
return (nilai_adc / 65535) * 990 + 10 # Estimasi lux (10 - 1000)
# Kalibrasi awal untuk membaca nilai lux normal (selama 2 detik)
print("Mengukur nilai lux normal...")
utime.sleep(2)
lux_normal = konversi_adc_ke_lux(ldr_sensor.read_u16())
print(f"Nilai Lux Normal: {lux_normal:.2f}")
# Loop utama
while True:
nilai_adc = ldr_sensor.read_u16()
nilai_lux = konversi_adc_ke_lux(nilai_adc)
print(f"ADC: {nilai_adc} | Lux: {nilai_lux:.2f}")
# Jika lux lebih terang dari normal + 300 lux
if nilai_lux > lux_normal + 300:
print("Terang meningkat signifikan! LED dan buzzer aktif.")
# Nyalakan buzzer dengan duty cycle 25%
suara_buzzer.duty_u16(int(0.25 * 65535))
# LED berkedip selama 2 detik
waktu_awal = utime.ticks_ms()
while utime.ticks_diff(utime.ticks_ms(), waktu_awal) < 2000:
lampu_led.toggle()
utime.sleep(0.25) # Kedip setiap 250ms
# Matikan LED dan buzzer
suara_buzzer.duty_u16(0)
lampu_led.off()
else:
# Tidak ada perubahan signifikan
suara_buzzer.duty_u16(0)
lampu_led.off()
utime.sleep(0.2)