//https://docs.wokwi.com/parts/wokwi-lcd1602
//https://wokwi.com/projects/344891772964438612
//LiquidCrystal I2C Hello World program
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
#define I2C_ADDR 0x27 // lcd i2c
#define LCD_COLUMNS 16 //20 lcd i2c
#define LCD_LINES 4 // 2 lcd i2c
#define col0 0 // lcd i2c
#define row0 0 // lcd i2c
#define row1 1 // lcd i2c
#define rightColumnPosition15 15 // ตำแหน่งขวามือสุดคือ ตำแหน่ง 15
#define lefColumnPosition0 0 // ตำแหน่งซ้ายมือสุดคือ ตำแหน่ง 0
#define dly100 100
#define DHTPIN 2 // DHT 22 Digital pin connected to the DHT sensor
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES); // lcd เป็นชื่อเล่น
DHT dht(DHTPIN, DHTTYPE); // DHT 22 ชื่อจริง DHT , ชื่อเล่น dht
//----
void setup() {
Serial.begin(115200);
// Init
lcd.init(); // lcd i2c
lcd.backlight(); // lcd i2c
dht.begin(); // DHT 22
}
// -- การป้องกนไฟติดหลักร้อย หลักหน่วย แสดงค่าแล้ว ไม่ดับ
void tempHum() { // lcd i2c
int temp = dht.readTemperature();
int hum = dht.readHumidity();
// -- temperature
lcd.setCursor(0,0);
lcd.print("Temp : ");
lcd.print(temp);
delay(500);
if (temp>=-10 && temp<=0) { // ใช้ temp >= 10 เป็น หลักหน่วย ก็ได้ เพราะถูก clear มาแล้ว
lcd.setCursor(8,0); // temp >= 100 เป็น หลักร้อย
lcd.print(" ");
}
// -- Humidity
lcd.setCursor(0,1);
lcd.print("Hum : ");
lcd.print(hum);
delay(500);
if (hum>=10 && hum<=15) { // ใช้ hum >= 10 เป็น หลักหน่วย ก็ได้ เพราะถูก clear มาแล้ว
lcd.setCursor(7,1); // hum >= 100 เป็น หลักร้อย
lcd.print(" ");
}
}
//---- DHT22
void loop() {
tempHum();
}
// end program y