The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
from machine import Pin, ADC
from time import sleep
# Initialize the light sensor (LDR) and LED
ldr = ADC(Pin(12))
led = Pin(20, Pin.OUT)
def get_duty_cycle(light_value):
# Map the light value to the duty cycle
# Completely dark (350) -> 90% on, 10% off
# Completely bright (790) -> 10% on, 90% off
min_light = 350
max_light = 790
min_duty = 90
max_duty = 10
duty_cycle = min_duty + (max_duty - min_duty) * ((light_value - min_light) / (max_light - min_light))
return duty_cycle
while True:
# Read the light value
light_value = ldr.read_u16() # Read the analog value (16-bit)
light_value = (light_value / 65535) * (790 - 350) + 350 # Scale to 350-790 range
# Calculate the duty cycle
duty_cycle = get_duty_cycle(light_value)
# Calculate on and off times
on_time = duty_cycle / 100.0
off_time = 1.0 - on_time
# Control the LED
led.on()
sleep(on_time)
led.off()
sleep(off_time)