// Pin definitions
#include <ESP32Servo.h>
#define TRIG1 5
#define ECHO1 18
#define TRIG2 17
#define ECHO2 16
#define GAS_SENSOR 34
#define SERVO_PIN 13
#define BUZZER 12
#define LED 14
#include <ESP32Servo.h>
Servo myservo;
long duration;
int distance;
void setup() {
Serial.begin(115200);
pinMode(TRIG1, OUTPUT);
pinMode(ECHO1, INPUT);
pinMode(TRIG2, OUTPUT);
pinMode(ECHO2, INPUT);
pinMode(BUZZER, OUTPUT);
pinMode(LED, OUTPUT);
myservo.attach(SERVO_PIN);
}
long readDistance(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
return distance;
}
void loop() {
int dist1 = readDistance(TRIG1, ECHO1);
int dist2 = readDistance(TRIG2, ECHO2);
int gasValue = analogRead(GAS_SENSOR);
Serial.print("Distance1: ");
Serial.println(dist1);
Serial.print("Distance2: ");
Serial.println(dist2);
Serial.print("Gas: ");
Serial.println(gasValue);
// Dustbin open
if (dist1 < 20) {
myservo.write(90);
} else {
myservo.write(0);
}
// Dustbin full alert
if (dist2 < 10) {
digitalWrite(LED, HIGH);
digitalWrite(BUZZER, HIGH);
} else {
digitalWrite(LED, LOW);
digitalWrite(BUZZER, LOW);
}
// Gas alert
if (gasValue > 2000) {
digitalWrite(BUZZER, HIGH);
}
delay(500);
}