from machine import I2C, Pin, ADC
import esp8266_i2c_lcd as esp8266_lcd
from time import sleep
adc32 = ADC(Pin(32))
adc32.atten(ADC.ATTN_11DB)
adc32.width(ADC.WIDTH_10BIT)
def map(x, in_min, in_max, out_min, out_max):
return int((x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min)
r = dict(zip(range(1016),["'Direct Sunlight'"]*39+["'Full Daylight'"]*131+["'Overcast Day'"]*111+["'Office Lighting'"]*230+["'Stairway Lighting'"]*121+["'Computer Monitor'"]*221+["'Twilight'"]*132+["'Deep Twilight'"]*30+["'Full Moon'"]))
i2c = I2C(0) # Using hardware I2C channel 0
lcd = esp8266_lcd.I2cLcd(i2c, esp8266_lcd.DEFAULT_I2C_ADDR, 2, 16)
lcd.clear()
while True:
val = adc32.read()
volts = (val*3.3)/1023
lux = map(volts, 0, 100000, 0, 1023)
input_voltage = "The condition is {}"
print(input_voltage.format(r[val]),end = "\r")
lcd.move_to(0,0)
lcd.putstr("ADC Value: {%d}" %(val))
lcd.move_to(0,1)
lcd.putstr("volts: {:%0.2f}" %(volts))