import machine
from machine import SoftI2C, Pin
from lcd_api import LcdApi
from i2c_lcd import I2cLcd
from ssd1306 import SSD1306_I2C
from time import sleep
import dht
sensor = dht.DHT22(Pin(12))
I2C_ADDR_LCD = 0x27
oled_width = 128
lcd_Rows = 2
lcd_Columns = 16
i2c = SoftI2C(scl=Pin(22), sda=Pin(21), freq=10000) #I2C method for ESP32
lcd = I2cLcd(i2c, I2C_ADDR_LCD, lcd_Rows, lcd_Columns)
lcd.move_to(1,0)
lcd.putstr("ESP32 with LCD")
while True:
try:
sleep(2)
sensor.measure()
temp = sensor.temperature()
hum = sensor.humidity()
temp_f = temp * (9/5) + 32.0
print('Temperature in C: ',temp,'T')
print('Temperature in F: ',temp_f,'F')
print('Humidity in %: ',hum,'%')
print('')
lcd.move_to(1,0)
lcd.putstr('room temp:'+str(temp)+'C')
lcd.move_to(0,1)
lcd.putstr('hum:'+str(hum)+'%')
lcd.move_to(0,1)
lcd.putstr('room temp:'+str(temp)+'C')
lcd.move_to(0,2)
lcd.putstr('room temp:'+str(temp_f)+'F')
lcd.move_to(0,3)
lcd.putstr('hum:'+str(hum)+'%')
except OSError as e:
print('Failed to read sensor.')