Arduino ile I2C LCD Kullanımı

Arduino ile I2C LCD Kullanımı Giriş

Arduino projelerinde sensör verilerini, menü sistemlerini veya kullanıcıya sunulacak bilgileri göstermek için kullanılan en popüler ekranlardan biri 16×2 LCD ekranlardır. Ancak klasik paralel LCD bağlantısı çok fazla pin gerektirir ve kablo karmaşasına sebep olur. İşte bu noktada I2C (Inter-Integrated Circuit) LCD ekranlar, yalnızca iki iletişim pini gerektirmesi sayesinde büyük avantaj sağlar.


I2C LCD Nedir?

I2C LCD ekranlar, klasik HD44780 tabanlı LCD ekranların arka kısmına eklenen bir I2C dönüştürücü modülü sayesinde, Arduino ile yalnızca iki kablo üzerinden iletişim kurabilen ekranlardır.

I2C LCD modülünün teknik bileşenleri:

  • PCF8574 I/O expander çipi
  • 7-bit I2C adresleme sistemi
  • Arka ışık kontrolü (backlight ON/OFF)
  • Kontrast ayarı için trimpot
  • 4 bit iletişim protokolü
  • 5V güç ile çalışma

I2C’nin avantajları:

✅ Sadece SDA ve SCL pinleri kullanılır
✅ Kablolama sade, hata ihtimali düşüktür
✅ Diğer I2C tabanlı sensörlerle aynı hat üzerinde çalışabilir
✅ LCD ekran üzerinde yer tasarrufu sağlar


Gerekli Donanım Listesi

MalzemeAdetAçıklama
Arduino UNO / MEGA / Nano1Kontrol kartı
16×2 LCD + I2C modülü1I2C arayüzlü ekran
Breadboard1Bağlantı yüzeyi
Jumper kablolar4Bağlantı için

Bağlantı Şeması

I2C LCD bağlantısı oldukça basittir. Sadece 4 kablo gerekir:

I2C LCD PinArduino UNO Pin
GNDGND
VCC5V
SDAA4
SCLA5

Notlar:

  • Arduino MEGA için SDA = 20, SCL = 21
  • Arduino Nano için pinler UNO ile aynıdır
  • 3.3V ile çalışan Arduino modellerinde seviye dönüştürücü kullanmak gerekebilir

Kod Bloğu

I2C LCD kullanımı için LiquidCrystal_I2C kütüphanesi gereklidir.

Temel LCD Yazdırma Kodu

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

LiquidCrystal_I2C lcd(0x27, 16, 2);  // LCD adresi ve boyutu

void setup() {
  lcd.init();              // LCD başlatılır
  lcd.backlight();         // Arka ışık açılır
  lcd.setCursor(0, 0);     // İlk satıra git
  lcd.print("Facadium STEM");
  lcd.setCursor(0, 1);     // İkinci satıra git
  lcd.print("I2C LCD Test");
}

void loop() {
}

I2C Adresi Farklı Olabilir

Bazı ekranlarda adres:

  • 0x27
  • 0x3F
  • 0x20
    olabiliyor.

Adres bulunamazsa aşağıdaki kodla tarama yapılır:


I2C Tarayıcı Kod Bloğu

#include <Wire.h>

void setup() {
  Wire.begin();
  Serial.begin(9600);
  Serial.println("I2C adresi taraniyor...");
}

void loop() {
  for (byte i = 0; i < 128; i++) {
    Wire.beginTransmission(i);
    if (Wire.endTransmission() == 0) {
      Serial.print("Adres bulundu: 0x");
      Serial.println(i, HEX);
    }
  }
  delay(1000);
}

Bu kod, takılı cihazın adresini seri monitörde gösterir.

Teknik Çalışma Mantığı

I2C protokolünde Arduino, master olarak davranır. LCD üzerindeki PCF8574 çipi ise slave cihazdır.
İletişim iki hat üzerinden gerçekleşir:

  • SDA (Serial Data) → Veri hattı
  • SCL (Serial Clock) → Saat sinyali

16×2 LCD’nin RS, E ve D4–D7 pinleri, PCF8574 çipi tarafından kontrol edilir. Arduino bu çipe I2C üzerinden komut gönderir; çip bunları LCD’ye aktarır.

Teknik avantajlar:

  • Doğrudan paralel bağlantıya göre %70 daha az pin kullanımı
  • Aynı hatta birden fazla I2C cihaz bağlanabilir
  • Daha stabil karakter yazımı

Gündelik Hayatta I2C LCD Kullanım Alanları

I2C LCD, Arduino projelerinde yaygın olarak kullanılan ekran türüdür. İşte bazı uygulamalar:

1. Sensör verisi gösterimi

  • Sıcaklık, nem
  • Toprak nem sensörü
  • Gaz sensörleri
  • Mesafe sensörü (HC-SR04)

2. Menü arayüzleri

  • IoT projeleri için ayar menüsü
  • Servo kontrol paneli
  • Röleli ev otomasyon menüsü

3. Endüstriyel göstergeler

  • Üretim sayacı
  • Makine çalışma saat göstergesi
  • Uyarı ve alarm ekranı

4. Robotik

  • Pil seviyesi göstergesi
  • Mod seçimi ekranı
  • Durum bildirme

5. Eğitim ve STEM projeleri

  • Öğrenciler için kodlama–donanım entegrasyonu
  • Arduino derslerinde temel ekran kullanımı

En Çok Aranan Sorular ve Cevaplar

1. Arduino I2C LCD adresimi nasıl bulurum?

I2C tarayıcı kodu ile seri monitörden adres bulunabilir.
En yaygın adresler 0x27 ve 0x3F’dir.


2. LCD ekrana hiçbir şey yazmıyor, neden?

Olası nedenler:

  • I2C adresi yanlış
  • SDA/SCL pinleri hatalı bağlanmış
  • Kontrast ayarı düşük (trimpot sağa/sola çevrilmeli)
  • Arka ışık kapalı

3. LCD ekranda sadece siyah kareler görünüyor, çözüm?

Bu sorun genellikle kontrast ayarının yanlış olması ile ilgilidir.
Modül üzerindeki potansiyometreyi çevirin.


4. I2C LCD arka ışığı nasıl kapatılır?

lcd.noBacklight();

5. 20×4 I2C LCD ile 16×2 arasında fark var mı?

Sadece boyut farkı vardır.
Kod yapısı aynıdır; LiquidCrystal_I2C lcd(0x27, 20, 4) yazmak yeterlidir.


6. I2C LCD ile özel karakter oluşturabilir miyim?

Evet. lcd.createChar() fonksiyonu ile Türkçe karakterler dahil ikonlar oluşturulabilir.


7. Aynı I2C hatta başka sensör ekleyebilir miyim?

Evet. I2C protokolü çoklu cihaz destekler. Cihaz adresleri farklı olmalıdır.


8. LCD yazıları sağa/sola kaydırmak mümkün mü?

Evet:

lcd.scrollDisplayLeft();
lcd.scrollDisplayRight();

9. I2C LCD neden titriyor?

Genellikle güç kaynağı yetersizdir. Harici 5V adaptör ile beslemek çözüm sağlar.


10. LCD’ye uzun metin nasıl yazılır?

Metni satır satır bölerek setCursor() komutuyla farklı konumlara yazılabilir.


Geliştirilebilir Proje Fikirleri

1. Mini Hava İstasyonu

(DHT11 + I2C LCD + Arduino)

2. Akıllı Ev Kontrol Paneli

(Röle + LCD menü sistemi)

3. IoT Mesaj Gösterici

(Mobil uygulamadan LCD’ye mesaj gönderme)

4. Robot Bilgi Ekranı

(Servo açıları, batarya durumu, mod seçimi)

5. Tarım Teknolojileri Ekranı

(Toprak nemi, sıcaklık ve su seviyesini gösteren panel)


Eğitimlerimize katılarak bu ve diğer projeleri uygulamalı olarak öğrenebilirsiniz. Eğitimlerimize ve diğer bilgilere buradaki linkten (https://www.facadium.com.tr/) ulaşabilirsiniz. Ürünlerimize STEM Kits üzerinden ulaşabilirsiniz. STEM Kits (https://www.stemkits.com.tr/) Lütfen bizlere iletişim kanallarından ulaşınız.