from machine import Pin, ADC
from time import sleep
# ----- CONFIGURATION -----
led_pins = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11] # 10 LEDs
leds = [Pin(pin, Pin.OUT) for pin in led_pins]
ldr = ADC(26) # LDR on GPIO26 / ADC0
# ----- FUNCTION TO MAP LDR VALUE TO LED COUNT -----
def map_ldr_to_leds(value):
"""
Map ADC value (0-65535) to number of LEDs (0-10)
Darker -> more LEDs ON
"""
inverted = 65535 - value
# Map 0-65535 to 0-10, round properly
led_count = round((inverted / 65535) * 10)
# Clamp just in case
if led_count > 10:
led_count = 10
elif led_count < 0:
led_count = 0
return led_count
# ----- MAIN LOOP -----
while True:
ldr_value = ldr.read_u16()
print("LDR Value:", ldr_value)
num_leds_on = map_ldr_to_leds(ldr_value)
for i in range(10):
if i < num_leds_on:
leds[i].on()
else:
leds[i].off()
sleep(0.2)