#define PIR_PIN PA0
#define LED PA5
#define BUZZER PA4
#define BUTTON PA6
bool systemState = false; // OFF initially
bool buttonState;
bool lastButtonState = HIGH;
unsigned long lastDebounceTime = 0;
const unsigned long debounceDelay = 50;
void setup() {
pinMode(PIR_PIN, INPUT);
pinMode(LED, OUTPUT);
pinMode(BUZZER, OUTPUT);
pinMode(BUTTON, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
// -------- BUTTON (DEBOUNCED TOGGLE) --------
bool reading = digitalRead(BUTTON);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == LOW) {
systemState = !systemState;
Serial.print("System: ");
Serial.println(systemState ? "ARMED" : "DISARMED");
}
}
}
lastButtonState = reading;
// -------- SECURITY LOGIC --------
if (systemState) {
int motion = digitalRead(PIR_PIN);
if (motion == HIGH) {
digitalWrite(LED, HIGH);
digitalWrite(BUZZER, HIGH);
Serial.println("🚨 Motion Detected!");
} else {
digitalWrite(LED, LOW);
digitalWrite(BUZZER, LOW);
}
} else {
// System OFF
digitalWrite(LED, LOW);
digitalWrite(BUZZER, LOW);
}
}