#define piezo 9
#define Motion 2
#define RED 3
#define GREEN 4
#define OFF 5
#define ON 6
bool systemEnabled = false;
bool alarmTriggered = false;
void setup() {
pinMode(piezo, OUTPUT);
pinMode(Motion, INPUT);
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(OFF, INPUT_PULLUP); // Подтягиваем к VCC
pinMode(ON, INPUT_PULLUP); // Подтягиваем к VCC
digitalWrite(piezo, LOW);
digitalWrite(RED, LOW);
digitalWrite(GREEN, LOW);
Serial.begin(9600);
Serial.println("Система готова. Переключите тумблер для включения.");
}
void loop() {
bool switchOffState = digitalRead(OFF) == LOW;
bool switchOnState = digitalRead(ON) == LOW;
if (switchOnState) { // Переключатель в положении "Вкл."
systemEnabled = true;
digitalWrite(GREEN, HIGH); // Зелёный светодиод горит
digitalWrite(RED, LOW); // Красный светодиод выключен
Serial.println("Сигнализация включена");
if (digitalRead(Motion) == HIGH) { // Обнаружено движение
alarmTriggered = true;
}
if (alarmTriggered) {
// Генерируем звук сирены
for (int i = 1000; i <= 2000; i += 10) {
tone(piezo, i);
delay(5);
}
for (int i = 2000; i >= 1000; i -= 10) {
tone(piezo, i);
delay(5);
}
// Мигаем светодиодами
while (alarmTriggered && switchOnState) {
digitalWrite(RED, HIGH);
digitalWrite(GREEN, LOW);
delay(300);
digitalWrite(RED, LOW);
digitalWrite(GREEN, HIGH);
delay(300);
// Обновляем состояние переключателя
switchOnState = digitalRead(ON) == LOW;
if (digitalRead(OFF) == LOW) {
alarmTriggered = false;
noTone(piezo); // Выключаем пищалку
}
}
}
} else if (switchOffState) { // Переключатель в положении "Выкл."
Serial.println("Сигнализация выключена");
systemEnabled = false;
alarmTriggered = false;
noTone(piezo); // Выключаем пищалку
digitalWrite(RED, HIGH); // Включаем красный светодиод
digitalWrite(GREEN, LOW); // Выключаем зелёный светодиод
}
delay(100); // небольшая задержка для стабилизации
}