#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
// Pin tanimlari / Pin definitions
const int DHT_PIN = 4;
#define DHT_TYPE DHT22
DHT dht(DHT_PIN, DHT_TYPE);
// LCD adresi 0x27, bazen 0x3F / LCD addr 0x27 or 0x3F
LiquidCrystal_I2C lcd(0x27, 16, 2);
// DHT22 min 2sn / DHT22 min 2s interval
const unsigned long READ_INTERVAL = 2000;
unsigned long lastRead = 0;
void setup() {
// V1 default I2C: SDA=21 SCL=22 / V1 I2C default
Wire.begin(21, 22);
lcd.init();
lcd.backlight();
// Acilis splash 3sn / Splash 3s
lcd.setCursor(3, 0);
lcd.print("BlueGrays");
lcd.setCursor(3, 1);
lcd.print("DHT22 v1.0");
delay(3000);
lcd.clear();
dht.begin();
delay(2500); // DHT22 warmup / DHT22 first-read settle
}
void loop() {
if (millis() - lastRead >= READ_INTERVAL) {
lastRead = millis();
float h = dht.readHumidity();
float t = dht.readTemperature();
lcd.clear();
// NaN = kablo/pullup sorunu / NaN = wiring/pullup issue
if (isnan(h) || isnan(t)) {
lcd.setCursor(0, 0);
lcd.print("Sensor okunamadi");
lcd.setCursor(0, 1);
lcd.print("Kablo+10k pullup");
} else {
// Sicaklik / Temperature
lcd.setCursor(0, 0);
lcd.print("Sicaklik:");
lcd.print(t, 1);
lcd.print("C");
// Nem / Humidity (DHT22 ondalik)
lcd.setCursor(0, 1);
lcd.print("Nem :");
lcd.print(h, 1);
lcd.print("%");
}
}
}