// https://wokwi.com/projects/344892587898831442
//---- LCD 20X4 (I2C)
#include <LiquidCrystal_I2C.h> // LCD 20X4 (I2C)
LiquidCrystal_I2C lcd(0X27, 20, 4); // LCD 20X4 (I2C) can use address 0X3f
// -- DHT
#include "DHT.h" // DHT
#define DHTPIN 2 // DHTPIN is digital led pin 2 use for DHT22
#define DHTTYPE DHT22 // DHT
DHT dht(DHTPIN, DHTTYPE); // DHT
// ---
#define dly1000 1000
#define d8 8 // digital led pin 8 use Relay
#define d9 9 // digital led pin 9 use PIR sensor
// --- Relay
int val; // variable val for keep value output by digitalRead(d9) equiment Relay
// --- DHT22
int h; // Humidity
int t; // Temperature
//--- baurate for Serial monitor
void Sbaudrate() {
Serial.begin(115200);
}
//---
void InitPinMode() {
pinMode(d8, OUTPUT); // Relay
pinMode(d9, INPUT); // PIR sensor
pinMode(DHTPIN, INPUT); // DHT22
}
//---
void InitDHT22() {
dht.begin();
}
//--- DHT humidity/temperature sensors, display to Serial Monitor
void Dht22() {
h = dht.readHumidity();
t = dht.readTemperature();
val = digitalRead(d9);
digitalWrite(d8, val);
Serial.print("Hum: ");
Serial.print(h);
Serial.print(" Temp: ");
Serial.println(t);
delay(dly1000);
}
//---- LCD 20X4 (I2C), display to LCD 20X4 (I2C)
void InitLCD20X4() { // initialize LCD 20X4 (I2C)
lcd.init();
lcd.backlight();
}
// --- use LCD20X4 (I2C)
void UseLCD20X4() { // initialize LCD 20X4 (I2C)
h = dht.readHumidity();
t = dht.readTemperature();
val = digitalRead(d9);
digitalWrite(d8, val);
lcd.setCursor(0,0);
lcd.print("Hum: ");
lcd.print(h);
lcd.print(" ");
lcd.print(" Temp: ");
lcd.print(t);
lcd.print(" ");
}
//---
void setup() {
Sbaudrate(); // Serial monitor
InitPinMode(); // Set pinMode
InitDHT22(); // DHT22
InitLCD20X4(); // initialize LCD 20X4 (I2C)
}
void loop() {
val = digitalRead(d9);
Serial.println(val);
digitalWrite(d8, val);
Dht22(); // DHT
UseLCD20X4(); // LCD 20X4 (I2C)
}