#include <Wire.h> // LCD ekran için
#include <LiquidCrystal_I2C.h> // LCD ekran için
#include "DHT.h" // DHT22 için
#include <OneWire.h> // DS18B20 için
#include <DallasTemperature.h> // DS18B20 için
// DHT22 ayarları
#define DHTPIN 4 // DHT22 DATA pini GPIO 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// DS18B20 ayarları
#define ONE_WIRE_BUS 5 // DS18B20 DATA pini GPIO 5
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// Buzzer ayarı
#define BUZZER_PIN 12 // Buzzer GPIO 12
// LCD ekran ayarı
LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C adresi 0x27, 16x2 LCD ekran
void setup() {
// Seri haberleşme
Serial.begin(115200);
// DHT22 başlatma
dht.begin();
Serial.println("DHT22 başlatıldı");
// DS18B20 başlatma
sensors.begin();
Serial.println("DS18B20 başlatıldı");
// Buzzer ayarı
pinMode(BUZZER_PIN, OUTPUT);
// LCD başlatma
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Initializing...");
delay(2000);
}
void loop() {
// DHT22 verilerini oku
float tempDHT = dht.readTemperature();
float humDHT = dht.readHumidity();
// DS18B20 verilerini oku
sensors.requestTemperatures();
float tempDS = sensors.getTempCByIndex(0);
// Veri kontrolü
if (isnan(tempDHT) || isnan(humDHT)) {
Serial.println("DHT22 verisi alinamadi!");
lcd.setCursor(0, 0);
lcd.print("DHT22 Error!");
return;
}
if (tempDS == DEVICE_DISCONNECTED_C) {
Serial.println("DS18B20 verisi alinamadi!");
lcd.setCursor(0, 1);
lcd.print("DS18B20 Error!");
return;
}
// Verileri seri porta yazdır
Serial.print("DHT22 Sicaklik: ");
Serial.print(tempDHT);
Serial.println(" C");
Serial.print("DHT22 Nem: ");
Serial.print(humDHT);
Serial.println(" %");
Serial.print("DS18B20 Sicaklik: ");
Serial.print(tempDS);
Serial.println(" C");
// LCD'ye yazdır
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp1:");
lcd.print(tempDHT);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Temp2:");
lcd.print(tempDS);
lcd.print("C");
// Kritik durum kontrolü
if (tempDHT > 38.0 || tempDS > 38.0) {
digitalWrite(BUZZER_PIN, HIGH); // Buzzer çalıştır
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HIGH TEMP ALERT!");
} else {
digitalWrite(BUZZER_PIN, LOW); // Buzzer kapat
}
delay(2000); // Döngüde bekleme
}
Loading
ds18b20
ds18b20