import time
from machine import ADC, Pin, I2C, SoftI2C, RTC
from pico_i2c_lcd import I2cLcd
import math
i2c= SoftI2C(sda=Pin(12), scl=Pin(13), freq=400000)
lcd_addr= i2c.scan()[0]
print(lcd_addr)
led= Pin(2, Pin.OUT)
lcd= I2cLcd(i2c, lcd_addr, 2, 16)
lcd.clear()
lcd.move_to(0, 0)
time.sleep(1)
adc= ADC(28)
pht= ADC(26)
BETA = 3950
GAMMA = 0.7
RL10 = 50
Green = Pin (3, Pin.OUT)
Yellow = Pin (6, Pin.OUT)
Red = Pin (2, Pin.OUT)
while True:
temp= adc.read_u16()
photo=pht.read_u16()
voltage = photo / 65535. * 5
resistance = 2000 * voltage / (1 - voltage / 5)
lux = math.pow(RL10 * 1e3 * math.pow(10, GAMMA) / resistance, (1 / GAMMA))
print(lux)
temp=1 / (math.log(1 / (65535. / temp - 1))/ BETA + 1.0 / 298.15) - 273.15
print(temp)
if(30<=temp):
Green.on()
elif(1<=temp<30):
Yellow.on()
elif(-23<=temp<1):
Red.on()
time.sleep(1)
Red.off()
Yellow.off()
Green.off()
led.on()
time.sleep(1)
led.off()
if (30<=temp):
lcd.putstr(str(temp)+" C")
lcd.move_to(3,1)
lcd.putstr(str(lux)+"lux")
time.sleep(1)
lcd.clear()
lcd.putstr("Hot Weather")
time.sleep(1)
lcd.clear()
if (30>=temp):
lcd.putstr(str(temp)+" C")
lcd.move_to(3,1)
lcd.putstr(str(lux)+"lux")
time.sleep(1)
lcd.clear()
lcd.putstr("Cold Weather")
time.sleep(1)
lcd.clear()