#include "DHT.h";
#include "NewPing.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
// Define Constants
#define DHTPIN 7 // DHT-22 Output Pin connection
#define DHTTYPE DHT11 // DHT Type is DHT 22 (AM2302)
#define TRIGGER_PIN 10
#define ECHO_PIN 13
#define MAX_DISTANCE 400
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
// Define Variables
float hum; // Stores humidity value in percent
float temp; // Stores temperature value in Celcius
float duration; // Stores HC-SR04 pulse duration value
float distance; // Stores calculated distance in cm
float soundsp; // Stores calculated speed of sound in M/S
float soundcm; // Stores calculated speed of sound in cm/ms
int iterations = 5;
int humint = 0;
// Initialize DHT sensor for normal 16mhz Arduino
DHT dht(DHTPIN, DHTTYPE);
void setup() {
lcd.init();
lcd.backlight();
dht.begin();
}
void loop()
{
delay(2000); // Delay so DHT-22 sensor can stabalize
hum = dht.readHumidity(); // Get Humidity value
humint = hum;
temp= dht.readTemperature(); // Get Temperature value
// Calculate the Speed of Sound in M/S
soundsp = 331.4 + (0.606 * temp) + (0.0124 * hum);
// Convert to cm/ms
soundcm = soundsp / 10000;
duration = sonar.ping_median(iterations);
// Calculate the distance
distance = (duration / 2) * soundcm;
// Send results to Serial Monitor
lcd.setCursor(1,0);
//lcd.print("Sound:");
lcd.print(soundsp);
lcd.print("m/s, ");
//lcd.print("Hum:");
lcd.print(humint);
lcd.print("%");
lcd.setCursor(1,1);
lcd.print(temp);
lcd.print("C, ");
//lcd.print("Dis:");
if (distance >= 400 || distance <= 2) {
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Distance:");
lcd.setCursor(1,1);
lcd.print("Out of range");
}
else {
lcd.print(distance,2);
lcd.print("cm");
delay(500);
}
}