Arduino ile Özel Karakterli DHT11 Sıcaklık-Nem Ölçer (I2C LCD)

Koza Akademi
Koza Akademi
4 dk okuma
308 izlenme
Yazı İçeriği (İçindekiler)
Arduino ile Özel Karakterli DHT11 Sıcaklık-Nem Ölçer (I2C LCD)

Arduino ile Özel Karakterli DHT11 Sıcaklık-Nem Ölçer (I2C LCD)

Bu uygulamada Arduino kullanarak DHT11 sensöründen nem ve sıcaklık verisi okuyan ve sonuçları I2C 16x2 LCD ekranda özel karakter (° derece simgesi) ile gösteren bir sistem geliştiriyoruz.

Bu proje; akıllı sera, ortam izleme ve IoT tabanlı veri toplama projelerinin temelini oluşturur.


📦 Kullanılan Donanımlar

  • Arduino Uno / Nano

  • DHT11 Sıcaklık-Nem Sensörü

  • 16x2 I2C LCD

  • Jumper kablo


🔌 Bağlantılar

DHT11

Pin Arduino
VCC 5V
GND GND
DATA D7

I2C LCD

LCD Arduino Uno
SDA A4
SCL A5
VCC 5V
GND GND

💻 Proje Kodu

#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

DHT sensor(7, DHT11);
LiquidCrystal_I2C lcd(0x27, 16, 2);

byte ozel[8] = {
B01110, B01010, B01110, B00100, B00100, B00000, B00000, B00000
};

void setup() {
  Wire.begin();
  lcd.init();
  lcd.backlight();
  lcd.createChar(0, ozel); 
  sensor.begin();
}

void loop() {
  float nem = sensor.readHumidity();
  float sicaklik = sensor.readTemperature();

  lcd.setCursor(0, 0);
  lcd.print("Nem:");
  lcd.setCursor(5, 0);
  lcd.print("%");
  lcd.setCursor(6, 0);
  lcd.print(nem);

  lcd.setCursor(0, 1);
  lcd.print("Sic:");
  lcd.setCursor(5, 1);
  lcd.print(sicaklik);
  lcd.setCursor(10, 1);
  lcd.write((byte)0);
  lcd.setCursor(11, 1);
  lcd.print("C");

  delay(2000);
}

📚 Kodun Detaylı Açıklaması


1️⃣ Kütüphaneler

Projede üç kütüphane kullanılır:

  • DHT.h → Sensör verisini okumak için

  • Wire.h → I2C haberleşme için

  • LiquidCrystal_I2C.h → LCD kontrolü için


2️⃣ Sensör ve LCD Tanımlama

DHT sensor(7, DHT11);
  • Sensör DATA pini → D7

  • Sensör modeli → DHT11

LiquidCrystal_I2C lcd(0x27, 16, 2);
  • I2C adres → 0x27

  • LCD boyutu → 16 sütun, 2 satır


3️⃣ Özel Karakter Tanımlama

byte ozel[8] = {
B01110,
B01010,
B01110,
B00100,
B00100,
B00000,
B00000,
B00000
};

LCD’ler maksimum 8 adet özel karakter saklayabilir.

Her satır:

  • 5x8 dot matrix piksel yapısını temsil eder.

Bu desen → derece (°) simgesi oluşturur.


4️⃣ setup() Fonksiyonu

Wire.begin();

I2C iletişimi başlatılır.

lcd.init();

LCD başlatılır.

lcd.backlight();

Arka ışık açılır.

lcd.createChar(0, ozel);
  • 0 numaralı hafıza slotuna özel karakter yüklenir.

  • Artık (byte)0 ile çağrılabilir.

sensor.begin();

Sensör çalışmaya hazır hale getirilir.


🔁 loop() Çalışma Mantığı


🌫️ Nem Okuma

float nem = sensor.readHumidity();

Nem değeri % olarak okunur.


🌡️ Sıcaklık Okuma

float sicaklik = sensor.readTemperature();

Sıcaklık °C cinsinden okunur.


🖥️ LCD’ye Yazdırma


1️⃣ Nem Satırı

lcd.setCursor(0, 0);
lcd.print("Nem:");
  1. satıra başlık yazılır.

lcd.setCursor(5, 0);
lcd.print("%");

Nem birimi eklenir.

lcd.setCursor(6, 0);
lcd.print(nem);

Nem değeri yazdırılır.

LCD Görünüm

Nem:%45.3

2️⃣ Sıcaklık Satırı

lcd.setCursor(0, 1);
lcd.print("Sic:");
  1. satıra sıcaklık başlığı.

lcd.setCursor(5, 1);
lcd.print(sicaklik);

Sıcaklık değeri yazdırılır.


🌡️ Derece Sembolü Yazdırma

lcd.setCursor(10, 1);
lcd.write((byte)0);
  • 0 numaralı özel karakter çağrılır.

  • Bu → derece simgesi.

lcd.setCursor(11, 1);
lcd.print("C");

Santigrat birimi eklenir.


LCD Nihai Görünüm

Nem:%45.3
Sic:24.7°C

⏱️ Ölçüm Gecikmesi

delay(2000);
  • 2 saniyede bir ölçüm yapılır.

  • DHT11 için güvenli okuma aralığıdır.


🧠 Teknik Notlar


🔹 Özel Karakter Sınırı

  • LCD → max 8 karakter saklar.

  • Slotlar: 0–7


🔹 Derece İşareti Alternatif

Bazı LCD’lerde hazır vardır:

lcd.print((char)223);

yada kodda kullandığımız gibi özel karaktet tanımlanabilir.

Bunun için Lcd Custom Char sayfasını kullanabilirsiniz.


🚀 Geliştirme Fikirleri

Projeyi büyütmek için:

  • Min / Max sıcaklık kaydı

  • Fan röle kontrolü

  • SD karta veri kaydı

  • ESP32 ile web panel

  • Grafiksel bar gösterimi


🧾 Sonuç

Bu projede:

  • DHT11 ile ortam verisi okundu

  • I2C LCD’de gösterildi

  • Özel karakter ile derece simgesi üretildi

  • LCD koordinat yönetimi uygulandı

Bu yapı; gerçek zamanlı izleme sistemlerinin temelini oluşturur ve ileri seviye otomasyon projelerine kolayca entegre edilebilir.

 

Hızlı Paylaş

Yorumlar

0

Henüz kimse bir şey yazmamış.
İlk yorumu siz yapmak ister misiniz?

Yorum Yaz

Düşünceleriniz bizim için değerli. E-posta adresiniz yayınlanmayacaktır.

Koza Akademi
Yazar

Koza Akademi

Teknoloji, yazılım ve tasarım dünyasından en güncel gelişmeleri paylaşıyorum.

Bültene Katılın

İlgili Yazılar

Teknolojinin Kullanım Faydaları
Robotik Kodlama
128

Teknolojinin Kullanım Faydaları

Teknolojinin hayatımızın her alanına sızdığı bir çağda, bazen "fişi çekip uzaklaşma" isteği duysak da, sunduğu imkanların yaşam kalitemizi ne kadar artırdığı yadsınamaz bir gerçek. Dijitalleşen dünya, sadece hız değil, aynı zamanda yeni bir bakış açısı da kazandırıyor.

Devamını Oku
Arduino ile SSD1306 OLED Ekran Kullanımı (I2C) — Devre ve Örnek Kod
Robotik Kodlama
62

Arduino ile SSD1306 OLED Ekran Kullanımı (I2C) — Devre ve Örnek Kod

Küçük projelerde seri monitöre bağlı kalmadan veri göstermek büyük rahatlık. 0.96” SSD1306 OLED ekranlar hem ucuz hem de çok az pinle çalıştığı için Arduino projelerinde sık tercih ediliyor. Bu yazıda, I2C üzerinden SSD1306 OLED’i bağlayıp kütüphane ile yazı/şekil çizdiren örnek bir devre ve kod paylaşacağım.

Devamını Oku