int relay1 = 8;
int relay2 = 7;
volatile byte relayState1 = LOW;
volatile byte relayState2 = LOW;
int PIRInterrupt1 = 2;
int PIRInterrupt2 = 1;
long lastDebounceTime1 = 0;
long debounceDelay1 = 10000;
long lastDebounceTime2 = 0;
long debounceDelay2 = 10000;
void setup() {
pinMode(relay1, OUTPUT);
digitalWrite(relay1, HIGH);
pinMode(relay2, OUTPUT);
digitalWrite(relay2, HIGH);
pinMode(PIRInterrupt1, INPUT);
pinMode(PIRInterrupt2, INPUT);
attachInterrupt(digitalPinToInterrupt(PIRInterrupt1), detectMotion, RISING);
attachInterrupt(digitalPinToInterrupt(PIRInterrupt2), detectMotion, RISING);
Serial.begin(9600);
Serial.begin(9600);
}
void loop() {
if((millis() - lastDebounceTime1) > debounceDelay1 && relayState1 == HIGH){
digitalWrite(relay1, HIGH);
relayState1 = LOW;
Serial.println("OFF");
}
delay(50);
if((millis() - lastDebounceTime2) > debounceDelay2 && relayState2 == HIGH){
digitalWrite(relay2, HIGH);
relayState2 = LOW;
Serial.println("OFF");
}
delay(50);
}
void detectMotion() {
Serial.println("Motion");
if(relayState1 == LOW){
digitalWrite(relay1, LOW);
}
relayState1 = HIGH;
Serial.println("ON");
lastDebounceTime1 = millis();
Serial.println("Motion");
if(relayState2 == LOW){
digitalWrite(relay2, LOW);
}
relayState2 = HIGH;
Serial.println("ON");
lastDebounceTime2 = millis();
}