const int micPin = 2; // D0 микрофона
const int buzzerPin = 8; // S пищалки
const int buttonPin = 3; // S кнопки
bool alarmActive = false;
bool lastMicState = HIGH;
bool lastButtonState = HIGH;
void setup() {
pinMode(micPin, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(buttonPin, INPUT); // Модуль кнопки сам имеет резистор, так что просто INPUT
Serial.begin(9600);
}
void loop() {
// 1. Хлопок
bool micState = digitalRead(micPin);
if (micState == LOW && lastMicState == HIGH && !alarmActive) {
delay(50);
if (digitalRead(micPin) == LOW) {
alarmActive = true;
Serial.println("CLAP");
}
}
lastMicState = micState;
// 2. Кнопка
bool btnState = digitalRead(buttonPin);
// Модуль кнопки обычно выдает HIGH при нажатии (active high)
if (btnState == HIGH && lastButtonState == LOW) {
delay(50);
if (digitalRead(buttonPin) == HIGH) {
alarmActive = false;
noTone(buzzerPin);
Serial.println("STOP");
}
}
lastButtonState = btnState;
// 3. Сирена
if (alarmActive) {
tone(buzzerPin, 1000);
delay(150);
tone(buzzerPin, 2000);
delay(150);
} else {
noTone(buzzerPin);
}
}