#include "DHT.h"
// Pin Tanımlamaları
#define DHTPIN 2 // DHT22'nin 2. bacağı Arduino Pin 2'ye bağlanacak
#define DHTTYPE DHT22 // Sensör tipi DHT22
#define SMOKE_PIN A0 // Potansiyometrenin orta ucu A0'a bağlanacak
#define BUZZER_PIN 8 // Buzzer Artı (+) ucu Pin 8'e bağlanacak
#define LED_PIN 13 // LED Artı (+) ucu Pin 13'e bağlanacak
DHT dht(DHTPIN, DHTTYPE);
// Eşik Değerleri
const float SICAKLIK_ESIK = 50.0; // 50 derecenin üstü tehlike
const int DUMAN_ESIK = 400; // 0-1023 arası analog değer (Potansiyometre çevrildikçe artar)
void setup() {
Serial.begin(115200); // Daha hızlı veri akışı için 115200 baud
pinMode(BUZZER_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
dht.begin();
Serial.println("--- Yangın Algılama Sistemi Başlatıldı ---");
Serial.println("Sensörler okunuyor...");
}
void loop() {
// Verileri okumak için 2 saniye bekle (DHT22 yavaş bir sensördür)
delay(2000);
// Sıcaklık ve Duman Verilerini Oku
float t = dht.readTemperature();
int dumanDegeri = analogRead(SMOKE_PIN);
// Sensörün okunup okunmadığını kontrol et
if (isnan(t)) {
Serial.println("HATA: DHT22 sensörü okunamadı! Bağlantıları kontrol edin.");
return;
}
// Verileri Seri Monitöre Yazdır
Serial.print("Sıcaklık: ");
Serial.print(t);
Serial.print(" °C | ");
Serial.print("Duman Seviyesi: ");
Serial.println(dumanDegeri);
// Yangın Algılama Mantığı
if (t > SICAKLIK_ESIK || dumanDegeri > DUMAN_ESIK) {
// Alarm Durumu
Serial.println("!!! UYARI: YÜKSEK ISI VEYA DUMAN ALGILANDI !!!");
digitalWrite(LED_PIN, HIGH);
// Buzzer'ı kesikli çaldır (Daha gerçekçi alarm sesi)
tone(BUZZER_PIN, 1000);
delay(200);
noTone(BUZZER_PIN);
} else {
// Güvenli Durum
digitalWrite(LED_PIN, LOW);
noTone(BUZZER_PIN);
}
}