import time
from machine import Pin, ADC, I2C, SoftI2C,
from pico_i2c_lcd import I2cLcd
import math
i2c = SoftI2C(sda=Pin(20),scl=Pin(19),freq=400000)
led = Pin(5, Pin.OUT)
lcd_addr = i2c.scan()[0]
lcd = I2cLcd(i2c,lcd_addr, 2, 16)
lcd.clear()
lcd.move_to(5,1)
beta = 3950
GAMMA = 0.7;
RL10 = 50;
adc = ADC(28)
pht = ADC(27)
while True:
led.off()
lcd.clear()
lcd.move_to(0,1)
photo = pht.read_u16()
tmp = adc.read_u16()
voltage = photo / 65536 * 5;
resistance = 2000 * voltage / (1 - voltage / 5);
lux = pow(RL10 * 1000 * pow(10, GAMMA) / resistance, (1 / GAMMA));
lux = round(lux,1)
celsius = 1 / (math.log(1 / (65536 / tmp - 1)) / beta + 1.0 / 298.15) - 273.15
celsius = round(celsius,2)
if celsius > 40:
led.on()
lcd.putstr(" {0}C {1}Lux".format(celsius,lux))
time.sleep(1)