#Buatlah rangkaian seperti gambar pada percobaan 1.
#buatlah ketika LDR membaca lebih gelap dari normal
#sebesar 300 LUX, LED merah hidup berkedip selama 1 detik
#dan Duty Cycle Buzzer 15%
from machine import Pin, PWM, ADC
import utime
# Pin Setup
ldr = ADC(28)
led = Pin(6, Pin.OUT)
buzzer = PWM(Pin(15))
buzzer.freq(1000)
buzzer.duty_u16(0)
# Fungsi konversi ADC ke Lux
def adc_to_lux(adc_value):
return (adc_value / 65535) * 900 + 10
lux_normal = None
last_blink_time = utime.ticks_ms()
led_state = False
while True:
analog_value = ldr.read_u16()
lux = adc_to_lux(analog_value)
if lux_normal is None:
lux_normal = lux
print(f"Lux Normal: {lux_normal}")
print(f"LDR Value: {analog_value} | Lux: {lux}")
if lux < lux_normal + 75:
buzzer.duty_u16(int(65535 * 0.15))
for freq in range(800, 1400, 20):
buzzer.freq(freq)
utime.sleep(0.02)
for freq in range(1400, 800, -20):
buzzer.freq(freq)
utime.sleep(0.02)
current_time = utime.ticks_ms()
if utime.ticks_diff(current_time, last_blink_time) >= 1000:
led_state = not led_state
led.value(led_state)
last_blink_time = current_time
else:
buzzer.duty_u16(0)
led.off()
utime.sleep(0.05)