#include <ESP32Servo.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_MPU6050.h>
#include <DHT.h>
#include <Wire.h>
#define OutDHTPIN 32
#define DHTTYPE DHT22
#define InDHTPIN 33
#define SERVO_PIN1 23
#define SERVO_PIN2 13
#define buzzer 30
#define led 18
int LDR=26;
int LDRvalue=0;
DHT dht1(OutDHTPIN, DHTTYPE);
DHT dht2(InDHTPIN, DHTTYPE);
float OutTemperature;
float InTemperature;
Servo myServo1;
Servo myServo2;
Adafruit_MPU6050 mpu;
unsigned long timeout = 0;
void setup(){
pinMode(OutDHTPIN, INPUT);
pinMode(InDHTPIN, INPUT);
pinMode(buzzer, OUTPUT);
pinMode(led, OUTPUT);
pinMode(LDR, INPUT);
Serial.begin(9600);
dht1.begin();
dht2.begin();
while (!Serial)
delay(10); // will pause Zero, Leonardo, etc until serial console opens
Serial.println("Adafruit MPU6050 test!");
myServo1.attach(SERVO_PIN1);
myServo2.attach(SERVO_PIN2);
while (!mpu.begin()) {
Serial.println("MPU6050 not connected!");
delay(1000);
}
Serial.println("MPU6050 ready!");
Serial.println("");
delay(100);
// myServo1.write(0);
// myServo2.write(0);
}
sensors_event_t event;
void loop(){
delay(4000);
OutTemperature= dht1.readTemperature();
InTemperature = dht2.readTemperature();
if (isnan(OutTemperature) || isnan(InTemperature))
{
Serial.print("Not working");
}
Serial.print("Inner space Temperature: ");
Serial.print(InTemperature);
Serial.println("°C");
Serial.print("Weather Temperature: ");
Serial.print(OutTemperature);
Serial.println("°C");
delay(2000);
if ( OutTemperature - InTemperature >=3)
{
Serial.println("Inner Temperature is less than the weather by more than 3 degree");
// myServo2.write(90);
// delay(100);
// myServo1.write(90);
// delay(100);
}
else {
Serial.println("The difference in Temperature is less than 3°C ");
// myServo1.write(0);
// delay(100);
// myServo2.write(0);
// delay(100);
}
mpu.getAccelerometerSensor()->getEvent(&event);
if (timeout < millis()) {
Serial.print("Accelerometer x: ");
Serial.print(event.acceleration.x );
Serial.print(" y: ");
Serial.print(event.acceleration.y );
Serial.print(" z: ");
Serial.println(event.acceleration.z );
int res = sqrt( pow (event.acceleration.x , 2) + pow (event.acceleration.y , 2) + pow (event.acceleration.z , 2) );
Serial.println(res);
Serial.println("");
timeout = millis() + 1000;
if(res < 10 && res > 10){
digitalWrite(led, HIGH);
} else {
digitalWrite(led, LOW);
}
delay(500);
}
LDRvalue= analogRead(LDR);
Serial.print("LDR value: " );
Serial.println(LDRvalue);
delay(500);
if(LDRvalue > 3000 ){
digitalWrite(buzzer, HIGH);
} else {
digitalWrite(buzzer, LOW);
}
delay(500);
}