Загрузка данных


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);
  }
}