import time
import board
import analogio
import digitalio
# Initialize LDRs
ldr1 = analogio.AnalogIn(board.GP27)
ldr2 = analogio.AnalogIn(board.GP26)
# Resistance value
R = 10000 # ohms
# Initialize RGB LED pins
ledR = digitalio.DigitalInOut(board.GP2)
ledG = digitalio.DigitalInOut(board.GP5)
ledB = digitalio.DigitalInOut(board.GP4)
ledR.direction = digitalio.Direction.OUTPUT
ledG.direction = digitalio.Direction.OUTPUT
ledB.direction = digitalio.Direction.OUTPUT
# Utility functions
def get_voltage(raw):
return (raw * 3.3) / 65536
def rtolux(rawval):
vout = get_voltage(rawval)
if vout == 0:
return 0 # or some default/fallback lux value
RLDR = (R * (3.3 - vout)) / vout
if RLDR == 0:
return 0 # another safeguard
lux = 500 / (RLDR / 1000)
return lux
def led_off():
ledR.value = True
ledG.value = True
ledB.value = True
# Call this before entering the loop
def red():
ledR.value = False
ledB.value = True
ledG.value = True
def magenta():
ledR.value = False
ledB.value = False
ledG.value = True
# Main loop
led_off()
while True:
ldr1_lux_total = 0
ldr2_lux_total = 0
# Take 15 samples
for i in range(15):
ldr1_lux_total += rtolux(ldr1.value)
ldr2_lux_total += rtolux(ldr2.value)
time.sleep(1.5)
# Calculate average lux values
avg_ldr1 = ldr1_lux_total / 15
avg_ldr2 = ldr2_lux_total / 15
print("Average LDR1 Lux: {:.2f}, LDR2 Lux: {:.2f}".format(avg_ldr1, avg_ldr2))
# Decision based on Table 1
if avg_ldr1 > avg_ldr2:
red()
else:
magenta()