#ธนดล สิทธิทอง
print("Hello, ESP32!")
import machine
import time
import dht
# กำหนดขาที่ต่อ DATA ของ DHT22 (เช่น GPIO4)
dht_pin = machine.Pin(14)
# สร้างออบเจกต์ DHT22
sensor = dht.DHT22(dht_pin)
from machine import I2C, Pin
from i2c_lcd import I2cLcd
# กำหนด I2C bus
i2c = I2C(scl=Pin(22), sda=Pin(21), freq=400000)
# ค้นหา I2C address (ใช้ i2c.scan() เพื่อดูว่าเจอ LCD ไหม)
# print("I2C devices found:", [hex(device) for device in i2c.scan()])
# สร้างออบเจกต์ LCD (ปกติ address ของ I2C LCD คือ 0x27 หรือ 0x3F)
I2C_ADDR = 0x27 # ลองเปลี่ยนเป็น 0x3F ถ้าไม่เจอ
lcd = I2cLcd(i2c, I2C_ADDR, 2, 16)
# แสดงข้อความ
lcd.puts("Hello, World!")
lcd.move_to(0, 1) # บรรทัดที่ 2
lcd.puts("ESP32 + LCD I2C")
# time.sleep(2)
time.sleep(2) # หน่วงเวลา 2 วินาที
lcd.clear()
while True:
try:
# อ่านค่าจาก DHT22
sensor.measure()
temp = sensor.temperature()
hum1 = sensor.humidity()
# แสดงผลใน Serial Monitor
print("Temperature: {:.1f}°C".format(temp))
print("Humidity: {:.1f}%".format(hum1))
print("------------------------")
# แสดงข้อความ
lcd.move_to(0, 0) # บรรทัดที่ 1
lcd.puts("Te: {:.1f}°C".format(temp))
lcd.move_to(0, 1) # บรรทัดที่ 2
lcd.puts("Hy: {:.1f}%".format(hum1))
except OSError as e:
print("Failed to read sensor:", e)
time.sleep(2) # หน่วงเวลา 2 วินาที