#include <LiquidCrystal_I2C.h> // LCD ekran için gerekli kütüphane
#include <DHT.h> // DHT sensörü için gerekli kütüphane
// LCD ve DHT Ayarları
#define I2C_ADDR 0x27 // LCD ekranın I2C adresi
#define LCD_COLUMNS 20 // LCD ekranın sütun sayısı (20 karakter)
#define LCD_LINES 4 // LCD ekranın satır sayısı (4 satır)
#define DHTPIN 2 // DHT22 sensörünün DATA pini (Arduino'nun 2. pinine bağlı)
#define DHTTYPE DHT22 // Kullanılan sensör tipi (DHT22)
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES); // LCD ekran nesnesi oluşturuluyor
DHT dht(DHTPIN, DHTTYPE); // DHT sensör nesnesi oluşturuluyor
void setup() {
lcd.init(); // LCD ekran başlatılıyor
lcd.backlight(); // LCD ekranın arka ışığı açılıyor
dht.begin(); // DHT sensörünü başlatıyor
lcd.setCursor(0, 0); // LCD ekranın ilk satır, ilk sütunundan yazmaya başla
lcd.print("DHT22 Sensor"); // Ekrana "DHT22 Sensor" yazdır
lcd.setCursor(0, 1); // LCD ekranın ikinci satır, ilk sütunundan yazmaya başla
lcd.print("Reading..."); // Ekrana "Reading..." yazdır
delay(1000); // 1 saniye bekle (başlangıç ekranı için)
}
void updateLCD(float temperature, float humidity) {
lcd.clear(); // LCD ekranı temizle
lcd.setCursor(0, 0); // İlk satır, ilk sütunundan yazmaya başla
lcd.print("Temp: "); // "Temp: " yazdır
lcd.print(temperature, 1); // Sıcaklık değerini yazdır (1 ondalık basamak ile)
lcd.print(" C"); // Sıcaklık birimi olan "C" yazdır
lcd.setCursor(0, 1); // İkinci satır, ilk sütunundan yazmaya başla
lcd.print("Humidity: "); // "Humidity: " yazdır
lcd.print(humidity, 1); // Nem değerini yazdır (1 ondalık basamak ile)
lcd.print(" %"); // Nem birimi olan "%" yazdır
}
void loop() {
float temperature = dht.readTemperature(); // DHT sensöründen sıcaklık değerini oku
float humidity = dht.readHumidity(); // DHT sensöründen nem değerini oku
// Eğer sensör verileri okunamıyorsa hata mesajı yazdır
if (isnan(temperature) || isnan(humidity)) { // isnan okunamaması
lcd.clear(); // LCD ekranı temizle
lcd.print("Sensor Error!");// "Sensor Error!" yazdır
} else {
updateLCD(temperature, humidity); // LCD'yi sıcaklık ve nem değerleriyle güncelle
}
delay(1000); // 1 saniye bekle (verilerin yenilenmesi için)
}