#include <ESP32Servo.h>
const int pirPin = 2;
const int buzzerPin = 5;
const int servoPin = 18;
#define LED 4
int motionDetected = 0;
bool alarmIsOn = false; //received from the site eventually
bool detectedIntruder = false;
bool doorsClosed=false;
Servo servo1;
void setup() {
pinMode(pirPin, INPUT);
pinMode(LED, OUTPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(15, INPUT_PULLUP);
servo1.attach(servoPin);
Serial.begin(9600);
}
void loop() {
motionDetected = digitalRead(pirPin);
alarmIsOn = digitalRead((15));
if(alarmIsOn==true)
{
if(motionDetected == HIGH)
{
detectedIntruder = true;
}
if(detectedIntruder == true)
{
if(doorsClosed==false)
{
for (int pos = 90; pos <= 180; pos += 10)
{
servo1.write(pos);
delay(15);
}
}
doorsClosed=true;
digitalWrite(LED, HIGH);
tone(buzzerPin, 3000, 50);
tone(buzzerPin, 31, 100);
delay(200);
tone(buzzerPin, 31, 100);
delay(200);
tone(buzzerPin, 3000, 50);
tone(buzzerPin, 31, 100);
delay(200);
tone(buzzerPin, 31, 100);
digitalWrite(LED, LOW);
delay(200);
tone(buzzerPin, 150, 100);
delay(170);
tone(buzzerPin, 11, 150);
delay(170);
tone(buzzerPin, 75, 150);
delay(170);
tone(buzzerPin, 31, 100);
}
}
else
{
detectedIntruder=false;
if(motionDetected == HIGH) digitalWrite(LED, HIGH);
else digitalWrite(LED, LOW);
if(doorsClosed==true)
{
for (int pos = 180; pos >= 90; pos -= 10)
{
servo1.write(pos);
delay(15);
}
}
doorsClosed=false;
}
/*
if (motionDetected == HIGH) {
digitalWrite(LED, HIGH);
tone(buzzerPin, 3000, 50);
tone(buzzerPin, 31, 100);
delay(200);
tone(buzzerPin, 31, 100);
delay(200);
tone(buzzerPin, 3000, 50);
tone(buzzerPin, 31, 100);
delay(200);
tone(buzzerPin, 31, 100);
delay(200);
tone(buzzerPin, 150, 100);
delay(170);
tone(buzzerPin, 11, 150);
delay(170);
tone(buzzerPin, 75, 100);
delay(170);
tone(buzzerPin, 31, 100);
} else {
digitalWrite(LED, LOW);
}
delay(500);
*/
}