#include <ArduinoJson.h>
#include <DHT.h>
#include <ESP32Servo.h>
#define DHTPIN 21 // For temperature and humidity sensor
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
const int TRIG_PIN_L = 26; // for ultrasonic sensor on left side
const int ECHO_PIN_L = 34;
const int TRIG_PIN_R = 17; // for ultrasonic sensor on left side
const int ECHO_PIN_R = 18;
float duration_us_L, dist_L;
float duration_us_R, dist_R;
float t;
int ldr_data;
int led = 27;
int fan = 16;
Servo s; //for servo
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(TRIG_PIN_R, OUTPUT);
pinMode(ECHO_PIN_R, INPUT);
pinMode(TRIG_PIN_L, OUTPUT);
pinMode(ECHO_PIN_L, INPUT);
pinMode(19, INPUT);
pinMode(led, OUTPUT);
pinMode(fan, OUTPUT);
s.attach(12);
}
void loop() {
ultrasonic_R();
ultrasonic_L();
Servo();
if (dist_R < 300 || dist_L < 300) {
temp();
if (t > 22) {
LDR();
if (ldr_data == 1) {
digitalWrite(led, LOW);
digitalWrite(fan, HIGH);
} else if (ldr_data == 0) {
digitalWrite(led, HIGH);
digitalWrite(fan, HIGH);
}
} else if (t <= 22) {
LDR();
if (ldr_data == 1) {
digitalWrite(led, LOW);
digitalWrite(fan, LOW);
} else if (ldr_data == 0) {
digitalWrite(led, HIGH);
digitalWrite(fan, LOW);
}
}
} else {
digitalWrite(led, LOW);
digitalWrite(fan, LOW);
}
}
void ultrasonic_R() {
digitalWrite(TRIG_PIN_R, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN_R, LOW);
duration_us_R = pulseIn(ECHO_PIN_R, HIGH);
dist_R = 0.017 * duration_us_R;
Serial.print("OBJECT DETECTED_R : ");
Serial.print(dist_R);
Serial.println(" cm");
}
void ultrasonic_L() {
digitalWrite(TRIG_PIN_L, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN_L, LOW);
duration_us_L = pulseIn(ECHO_PIN_L, HIGH);
dist_L = 0.017 * duration_us_L;
Serial.print("OBJECT DETECTED_L : ");
Serial.print(dist_L);
Serial.println(" cm");
}
void Servo() {
for (int i = 0; i <= 90; i++) {
s.write(i);
delay(10);
}
for (int j = 90; j >= 0; j--) {
s.write(j);
delay(10);
}
}
void LDR() {
ldr_data = digitalRead(19);
Serial.println(ldr_data);
}
void temp() {
float h = dht.readHumidity();
t = dht.readTemperature();
Serial.print("HUMIDITY = ");
Serial.print(h);
Serial.print("%\tTEMPERATURE = ");
Serial.print(t);
Serial.println(" °C");
}