#define LDR_PIN A0
#define BUZZER_PIN 3
int baselineLight = 0;
bool alarmActive = false;
void setup() {
pinMode(BUZZER_PIN, OUTPUT);
digitalWrite(BUZZER_PIN, LOW);
Serial.begin(9600);
Serial.println("Laser Security Line Simulation");
Serial.println("Calibrating...");
// ===== КАЛИБРОВКА =====
int sum = 0;
for (int i = 0; i < 10; i++) {
sum += analogRead(LDR_PIN);
delay(100);
}
baselineLight = sum / 10;
Serial.print("Baseline light level: ");
Serial.println(baselineLight);
Serial.println("System armed");
Serial.println("Type RESET to disable alarm");
}
void loop() {
// ===== ПРОВЕРКА СБРОСА =====
if (Serial.available()) {
String cmd = Serial.readStringUntil('\n');
cmd.trim();
if (cmd == "RESET") {
alarmActive = false;
noTone(BUZZER_PIN);
Serial.println("Alarm RESET");
}
}
int currentLight = analogRead(LDR_PIN);
// ===== ОБНАРУЖЕНИЕ ПЕРЕСЕЧЕНИЯ =====
if (currentLight < baselineLight - 100 && !alarmActive) {
alarmActive = true;
Serial.println("ALARM! Beam interrupted!");
}
// ===== СИРЕНА =====
if (alarmActive) {
tone(BUZZER_PIN, 1000);
}
delay(100);
}