#include <Stepper.h>
// Pin definitions
#define pirPin 2 // PIR sensor input
#define ledSensor 13 // LED sensor
#define ledSlaapkamer 6 // LED slaapkamer
#define ledLiving 5 // LED living
#define ledTrap 3 // LED trap
#define buzzerPin 7 // Buzzer
// tijd variabelen
unsigned long alarmStartTime = 0;
const int ledTijd1 = 200; // LED slaapkamer Tijd
const int ledTijd2 = 400; // LED living Tijd
const int ledTijd3 = 600; // LED trap Tijd
const int alarmtijd = 5000; // Alarm actief voor 5 seconden
// alarm variabelen
bool alarmActief = false;
int alarmState = 0; // start "State machine"
const int stepsPerRevolution = 200;
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
void setup() {
pinMode(pirPin, INPUT);
pinMode(ledSensor, OUTPUT);
pinMode(ledSlaapkamer, OUTPUT);
pinMode(ledLiving, OUTPUT);
pinMode(ledTrap, OUTPUT);
pinMode(buzzerPin, OUTPUT);
myStepper.setSpeed(10);
Serial.begin(9600);
}
void loop() {
int pirState = digitalRead(pirPin);
unsigned long huidigeMillis = millis();
switch (alarmState) {
case 0: // controle alarm
if (pirState == HIGH) {
Serial.println("🚨 Alarm triggered!");
alarmActief = true;
alarmStartTime = huidigeMillis;
digitalWrite(ledSensor, HIGH);
//myStepper.step(stepsPerRevolution);
alarmState = 1;
}
break;
case 1: // Slaapkamerled aan na ledTijd1
if (huidigeMillis - alarmStartTime >= ledTijd1) {
digitalWrite(ledSlaapkamer, HIGH);
alarmState = 2;
}
break;
case 2: // Livingled aan na ledTijd1
if (huidigeMillis - alarmStartTime >= ledTijd2) {
digitalWrite(ledLiving, HIGH);
alarmState = 3;
}
break;
case 3: // Trapled aan na ledTijd1
if (huidigeMillis - alarmStartTime >= ledTijd3) {
digitalWrite(ledTrap, HIGH);
alarmState = 4;
}
break;
case 4: // Leds en alarm aan voor 5000ms
if (huidigeMillis - alarmStartTime >= alarmtijd) {
Serial.println("✅ Alarm stopped!");
digitalWrite(ledSensor, LOW);
digitalWrite(ledSlaapkamer, LOW);
digitalWrite(ledLiving, LOW);
digitalWrite(ledTrap, LOW);
//myStepper.step(-stepsPerRevolution);
alarmActief = false;
alarmState = 0; // Reset alarm
}
break;
}
// Hond blaft
if (alarmActief) {
tone(buzzerPin, 500); // blaffen
} else {
noTone(buzzerPin); // stop blaffen
}
}
Buiten
Sensor
Blaffende
Hond
Slaap
kamer
Trap
Living
Sensor