#include <ESP32Servo.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// Pin Definitions
#define TRIG_PIN 18
#define ECHO_PIN 5
#define SERVO_PIN 19
#define BUZZER_PIN 22
#define TEMP_SENSOR_PIN 34
// Constants
#define DISTANCE_THRESHOLD 10
#define TEMP_THRESHOLD 55
// Objects
Servo myservo;
OneWire oneWire(TEMP_SENSOR_PIN);
DallasTemperature sensors(&oneWire);
// Variables
int distance;
float temperature;
bool alertState = false;
void setup() {
Serial.begin(115200);
myservo.attach(SERVO_PIN);
sensors.begin();
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(BUZZER_PIN, OUTPUT);
}
void loop() {
// Measure distance
distance = getDistance();
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
if (distance <= DISTANCE_THRESHOLD) {
digitalWrite(BUZZER_PIN, HIGH);
myservo.write(90);
} else {
digitalWrite(BUZZER_PIN, LOW);
myservo.write(0);
}
// Measure temperature
sensors.requestTemperatures();
temperature = sensors.getTempCByIndex(0);
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" C");
if (temperature >= TEMP_THRESHOLD) {
alertState = true;
digitalWrite(BUZZER_PIN, HIGH);
} else {
alertState = false;
digitalWrite(BUZZER_PIN, LOW);
}
delay(1000);
}
int getDistance() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
int duration = pulseIn(ECHO_PIN, HIGH);
return duration * 0.034 / 2;
}