String command;
// Timer: Auxiliary variables
unsigned long now = millis();
unsigned long lastTrigger = 0;
boolean startTimer = false;
unsigned long IRlastTrigger = 0;
boolean IRstartTimer = false;
unsigned long NoiselastTrigger = 0;
boolean NoisestartTimer = false;
boolean motionsensorflag = false;
boolean irsensor = false;
boolean noisesensor = false;
const int motionSensor = 27;
//const int led1 = 12;
const int motionSensor1 = 34;
const int soundSensor = 32;
#define timeSeconds 5
//#define LED 2
// Checks if motion was detected, sets LED HIGH and starts a timer
void IRAM_ATTR detectsMovement() {
Serial.println("MOTION DETECTED!!!");
//digitalWrite(led2, HIGH);
startTimer = true;
motionsensorflag= true;
lastTrigger = millis();
}
void IRAM_ATTR detectsMovement1() {
Serial.println("IR DETECTED!!!");
IRstartTimer = true;
irsensor = true;
IRlastTrigger = millis();
}
void IRAM_ATTR detectsound() {
Serial.println("Sound DETECTED!!!");
NoisestartTimer = true;
noisesensor = true;
NoiselastTrigger = millis();
}
void setup() {
Serial.begin(9600);
Serial.println(" Testing ");
//delay(2000);
command = "";
//delay(2000);
//pinMode(LED,OUTPUT);
pinMode(motionSensor, INPUT_PULLUP);
pinMode(motionSensor1, INPUT); //To be activated while using IR sensor
pinMode(soundSensor, INPUT); //To be activated while using Noise sensor
// Set motionSensor pin as interrupt, assign interrupt function and set RISING mode
attachInterrupt(digitalPinToInterrupt(motionSensor), detectsMovement, FALLING); //To be activated while using PR sensor
attachInterrupt(digitalPinToInterrupt(motionSensor1), detectsMovement1, FALLING); //To be activated while using IR sensor
attachInterrupt(digitalPinToInterrupt(soundSensor), detectsound, RISING); //To be activated while using Noise sensor
// Set LED to LOW
//pinMode(led2, OUTPUT);
//digitalWrite(led2, LOW);
// pinMode(led1, OUTPUT);
//digitalWrite(led1, LOW);
}
void loop() {
//Serial.println("IR SENSOR VEFORE");
//Serial.println(digitalPinToInterrupt(motionSensor1));
/*if(digitalRead(motionSensor)== HIGH)
{Serial.println("Motion SENSOR testing ..");
}
if(digitalRead(motionSensor1)== HIGH)
{Serial.println("IR SENSOR testing ..");
}*/
if(digitalPinToInterrupt(motionSensor)==27 && motionsensorflag )
{
Serial.println("Motion SENSOR LINKING..");
}
if(digitalPinToInterrupt(motionSensor1)==34 && irsensor )
{
Serial.println("IR SENSOR LINKING..");
}
if(digitalPinToInterrupt(soundSensor)==32 && noisesensor )
{
Serial.println("Noise SENSOR LINKING..");
}
// Serial.println(IRAM_ATTR.status());
// Serial.println(detectsMovement1.status());
// Current time
now = millis();
// Turn off the LED after the number of seconds defined in the timeSeconds variable
if(startTimer && (now - lastTrigger > (timeSeconds*1000))) {
Serial.println("Motion stopped...");
motionsensorflag=false;
startTimer = false;
}
if(IRstartTimer && (now - IRlastTrigger > (timeSeconds*1000))) {
Serial.println("IR stopped...");
irsensor=false;
IRstartTimer = false;
} if(NoisestartTimer && (now - NoiselastTrigger > (timeSeconds*1000))) {
Serial.println("Motion stopped...");
noisesensor=false;
NoisestartTimer = false;
// detachInterrupt(soundSensor.PIN);
}
/*******************************************************************/
}