#include <LiquidCrystal_I2C.h>
#include "DHTesp.h"
//SENSORS:
//D18 DHT
//D27 POTEN
//D32 USS TRIG
//D33 USS ECHO
//D4 SERVO
/*ID-ing the LCD*/
LiquidCrystal_I2C LCD=LiquidCrystal_I2C(0x27,16,4);
/*ID-ing & initating the DHT sensor */
const int DHT_PIN = 18;
DHTesp dhtSensor;
float tempValOld = 100000;
float humidValOld = 1000000;
/*initating the Potentiometer*/
int potentOldVal = 1000000;
/*ID-ing & initating the USS*/
int ussOldVal = 1000000;
#define PIN_TRIG 32
#define PIN_ECHO 33
void clearLCDLine(int line)
{
LCD.setCursor(0,line);
for(int n = 0; n < 20; n++) // 20 indicates symbols in line. For 2x16 LCD write - 16
{
LCD.print(" ");
}
}
void Read_USS(){
// Start a new measurement:
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
// Read the result:
int duration = pulseIn(PIN_ECHO, HIGH);
int ussVal = duration / 58; //Distance in CM
if (ussVal != ussOldVal){
Serial.print("Distance in CM: ");
Serial.println(ussVal);
clearLCDLine(3);
LCD.setCursor(0,3);
LCD.print("Distance = " + String(ussVal) + "CM");
ussOldVal = ussVal;
}
}
void Read_Potent(){
int value = analogRead(27);
if(value != potentOldVal){
String txtdisp = "Potent Value = " + String(value);
Serial.println(txtdisp);
clearLCDLine(0);
LCD.setCursor(0,0);
LCD.print(txtdisp);
potentOldVal = value;
}
}
void Read_TempAndHumid(){
TempAndHumidity data = dhtSensor.getTempAndHumidity();
float tempValCurr = data.temperature;
float humidValCurr = data.humidity;
if(tempValCurr != tempValOld){
Serial.println("Temp = " + String(data.temperature, 2) + "°C");
clearLCDLine(1);
LCD.setCursor(0,1);
LCD.print("Temp = " + String(data.temperature, 2) + " Cel" );
tempValOld = tempValCurr;
}
if(humidValCurr != humidValOld){
Serial.println("Humidity = " + String(data.humidity, 1) + "%");
clearLCDLine(2);
LCD.setCursor(0,2);
LCD.print("Humidity = " + String(data.humidity, 1) + "%");
humidValOld = humidValCurr;
}
}
void setup() {
Serial.begin(115200);
pinMode(27, INPUT);
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
LCD.init();
LCD.backlight();
delay(100);
Serial.println("Setup done");
}
void loop() {
Read_Potent();
Read_TempAndHumid();
Read_USS();
delay(1500);
}