/*
**Task**
Interface LCD-I2C, DHT22 and HC-SR04 with ESP32.
Display Temperature, Humidity and Distance on LCD Display.
**Rules**
Learn and try to solve task.
Time: Max 2hrs
Google is Allowed.
Any type of AI is not allowed.
Using AI will lead in rejection of your application.
*/
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHT22_PIN 33
const int echoPin= 0;
const int trigPin = 14;
float duration ,distance,dis_Meter;
DHT dht22(DHT22_PIN, DHT22);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
lcd.init();
lcd.clear();
pinMode(echoPin,INPUT);
pinMode(trigPin, OUTPUT);
Serial.begin(9600);
dht22.begin();
}
void loop() {
lcd.clear();
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration*.0343)/2;
dis_Meter = distance/100;
lcd.setCursor(0, 0);
lcd.print("Dis_Display");
lcd.setCursor(0,1);
lcd.print(dis_Meter);
lcd.setCursor(0,5)
lcd.print("m")
delay(2000);
lcd.clear();
float humi = dht22.readHumidity();
float tempC = dht22.readTemperature();
float tempF = tempC+32;
if ( isnan(tempC) || isnan(humi)) {
lcd.println("Failed to sense!");
lcd.clear();
} else {
lcd.setCursor(2, 0);
lcd.print("Humidity: ");
lcd.setCursor(2, 1);
lcd.print(humi);
delay(2000);
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Temperature: ");
lcd.setCursor(2, 1);
lcd.print(tempF);
lcd.setCursor(8,1);
lcd.print("F");
delay(2000);
}
}