//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
int temp=0;
int hum=0;
//----
void setup() {
Serial.begin(115200);
// Init
lcd.init(); // lcd i2c
lcd.backlight(); // lcd i2c
dht.begin(); // DHT 22
}
//-- display temparature line 0
void temperature() {
lcd.setCursor(lefColumnPosition0, row0);
lcd.print("Temp : ");
lcd.print(temp);
}
//--- display Humidity line 1
void Humnity() {
lcd.setCursor(lefColumnPosition0, row1);
lcd.print("Hum : ");
lcd.print(hum);
}
//---- DHT22 read temparature , Humidity
void dht22read() {
hum = dht.readHumidity();
temp = dht.readTemperature(); // Read temperature as Celsius (the default)
}
// -- การป้องกนไม่หลกร้อย หลกหน่วย แสดงค่าแล้ว ไม่ลบ
void lcdclearMainHundresDIgit() { // lcd i2c
if ((temp>=100) || (temp<10)) { // ถ้า temp มีค่า 2 หลก ไม่ต้องทำคำสง lcd.clear();
lcd.clear();
}
if ((hum>=100) || (hum<10)) { // ถ้า hum มีค่า 2 หลก ไม่ต้องทำคำส่ง lcd.clear();
lcd.clear();
}
}
//---- DHT22
void loop() {
//lcd.setCursor(0, 0);
//lcd.print("Hello, world!");
dht22read(); // read temparature , Humidity
temperature(); // display temparature line 0
//delay(100);
Humnity(); // display Humidity line 1
delay(100);
lcdclearMainHundresDIgit();
}
// end program y