#include <LiquidCrystal.h>
// LCD: RS=7, E=8, D4=9, D5=10, D6=11, D7=12
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
// Пины
const int smokePin = A0; // RV1 — датчик дыма
const int tempPin = A1; // RV2 — симуляция температуры
const int buzzerPin = 2; // BUZ1 через R8 (100 Ом)
const int relayPin = 13; // R9 → SW → база Q1 → вентилятор
const int redLedPin = 4; // R5 (220 Ом) → D2
const int greenLedPin = 5; // R6 (220 Ом) → D3
const int buttonPin = 6; // кнопка сброса
const int smokeThreshold = 500; // порог срабатывания АЦП
void setup() {
pinMode(buzzerPin, OUTPUT);
pinMode(relayPin, OUTPUT);
pinMode(redLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
// Начальное состояние — норма
digitalWrite(buzzerPin, LOW);
digitalWrite(relayPin, LOW);
digitalWrite(redLedPin, LOW);
digitalWrite(greenLedPin, HIGH);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Anti-smoke sys");
lcd.setCursor(0, 1);
lcd.print("Starting...");
delay(1500);
lcd.clear();
}
void loop() {
int smokeValue = analogRead(smokePin); // 0–1023
int tempRaw = analogRead(tempPin); // 0–1023
int tempValue = map(tempRaw, 0, 1023, 0, 50); // симуляция 0–50°C
// --- Ручной сброс ---
if (digitalRead(buttonPin) == LOW) {
digitalWrite(redLedPin, LOW);
digitalWrite(greenLedPin, HIGH);
digitalWrite(buzzerPin, LOW);
digitalWrite(relayPin, LOW);
lcd.setCursor(0, 0);
lcd.print("Manual reset ");
lcd.setCursor(0, 1);
lcd.print("VENT OFF ");
delay(500);
return;
}
// --- Режим тревоги ---
if (smokeValue > smokeThreshold) {
digitalWrite(redLedPin, HIGH);
digitalWrite(greenLedPin, LOW);
digitalWrite(buzzerPin, HIGH);
digitalWrite(relayPin, HIGH);
lcd.setCursor(0, 0);
lcd.print("SMOKE DETECTED ");
lcd.setCursor(0, 1);
lcd.print("T:");
lcd.print(tempValue);
lcd.print("C VENT ON ");
}
// --- Нормальный режим ---
else {
digitalWrite(redLedPin, LOW);
digitalWrite(greenLedPin, HIGH);
digitalWrite(buzzerPin, LOW);
digitalWrite(relayPin, LOW);
lcd.setCursor(0, 0);
lcd.print("STATUS: NORMAL ");
lcd.setCursor(0, 1);
lcd.print("T:");
lcd.print(tempValue);
lcd.print("C VENT OFF ");
}
delay(200);
}