#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define trigPin 10
#define echoPin 9
#define DHTPIN A1 // Define the pin for the DHT22 sensor
#define DHTTYPE DHT22 // Define the type of the DHT22 sensor
DHT dht(DHTPIN, DHTTYPE); // Create an instance of the DHT class
LiquidCrystal_I2C lcd(0x27, 20, 4);
String dist, temp;
int adc = 0;
void setup() {
lcd.init();
dht.begin(); // Initialize the DHT22 sensor
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(DHTPIN, INPUT);
pinMode(4, OUTPUT);
pinMode(3, OUTPUT);
pinMode(2, OUTPUT);
pinMode(A0, INPUT);
}
void loop() {
adc = analogRead(0);
int temperature = dht.readTemperature(); // Read the temperature in Celsius
int humidity = dht.readHumidity(); // Read the humidity
temp = "T: " + String(temperature) + "*C, H: " + String(humidity) + "%";
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
int distance = duration / 58.2; // Divide by 58.2 to convert duration to centimeters
if (display(distance) == 0) {
lcd.noBacklight();
lcd.noDisplay();
}
else {
lcd.backlight();
lcd.display();
}
dist = "Distance: " + String(distance) + " cm";
lcd.setCursor(0,1);
// lcd.print(dist);
Serial.println(dist);
lcd.setCursor(0,0);
lcd.print(temp);
Serial.println(temp);
}
int display(int distance){
if(distance >= 150 && distance < 200){
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
return 1;
}
else if(distance >= 100 && distance < 150){
digitalWrite(3, HIGH);
digitalWrite(2, LOW);
digitalWrite(4, LOW);
return 1;
}
else if(distance >= 50 && distance < 100){
digitalWrite(4, HIGH);
digitalWrite(3, LOW);
digitalWrite(2, LOW);
return 1;
}
else if(distance >= 200){
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
return 0;
}
else{
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
return 1;
}
}