Arduino 16×2 LCD Ekran kullanımı, projelerinizde kullanıcı arayüzü (UI) tasarımı ve veri görselleştirme açısından son derece zengin bir uygulama alanına sahiptir. Bir LCD ekran entegrasyonu sayesinde; sensör verilerini anlık olarak takip edebilir, basit oyun senaryoları geliştirebilir, güvenlik sistemleri için durum ekranları oluşturabilir veya endüstriyel otomasyon süreçlerini gözlemleyebilirsiniz.
Bu rehberimizde, kütüphanenin sunduğu gelişmiş fonksiyonları detaylandıracak ve ekran üzerinde özel karakterler (Türkçe karakterler dahil) nasıl oluşturulur adım adım inceleyeceğiz.
16×2 Karakter LCD ekranların bazı modelleri, arkasında yerleşik bir I2C (I2C backpack) sürücü kartı ile birlikte gelir. Bu sayede, karmaşık ve kalabalık kablo bağlantıları yerine sadece 2 adet veri kablosu (SDA ve SCL) kullanarak ekranı kontrol edebilirsiniz. Önceki çalışmalarımızda I2C modülü olmayan standart modellerle uygulamalar gerçekleştirmiştik. Bu yazımızda ise hem I2C modüllü hem de I2C modülü bulunmayan klasik LCD ekranların Arduino ile nasıl kontrol edileceğini ayrıntılı olarak ele alacağız. Başlamadan önce temel protokol bilgisi edinmek isterseniz Arduino I2C Kullanımı yazımıza göz atabilirsiniz.
Önceki LCD Ekran projelerimiz ve alternatif ekran çözümlerimiz:
Arduino 16×2 LCD Ekran Kullanımı: I2C Devresi (Backpack) Olan LCD Ekran Kullanımı
I2C (Inter-Integrated Circuit), cihazlar arası iletişimi sağlayan senkron, çoklu bağımlı (multi-slave) ve tek sonlandırmalı bir seri haberleşme protokolüdür. I2C veri yolu üzerinde veri aktarımı için sadece iki hat kullanılır: SDA (Serial Data Line) ve SCL (Serial Clock Line). Mikrokontrolcü dünyasında yaygın olarak +5V veya +3.3V gerilim seviyelerinde çalışır. I2C protokolünün teknik detaylarını öğrenmek için buradaki rehberimizi inceleyebilirsiniz.

Gerekli Malzemeler
- Arduino UNO (veya benzeri bir geliştirme kartı)
- 16×2 Karakter LCD Ekran (I2C Dönüştürücü Kartı Lehimlenmiş)
- Erkek-Dişi Jumper Kablolar
- Sürücü üzerinde yer alan yerleşik potansiyometre (kontrast ayarı için)

Bağlantı Şeması

| Arduino UNO Pin | I2C Sürücülü LCD Ekran Pin |
|---|---|
| GND | GND |
| 5V | VCC |
| A4 (SDA) | SDA |
| A5 (SCL) | SCL |
I2C Donanım Adresini Tespit Etmek
I2C modüllerinin varsayılan fabrikasyon adresleri (genellikle 0x27 veya 0x3F) veri sayfalarında belirtilse de, modül üzerindeki entegrelerin markasına veya lehim köprülerine bağlı olarak bu adres değişebilir. Yazılım kodlamasına geçmeden önce, aşağıdaki adımları sırasıyla gerçekleştirmenizi önemle tavsiye ederiz:
1. Fiziksel bağlantıları şemaya uygun şekilde tamamlayın.
2. Aşağıdaki I2C Adres Tarama Kodu‘nu Arduino’nuza yükleyin.
3. Seri Port Ekranını (Serial Monitor) açarak ekranın gerçek hex adresini öğrenin.
Önemli İpucu: Eğer I2C adresi yanlış tanımlanırsa, LCD arka ışığı yansa dahi ekranda hiçbir karakter görünmez. Aynı şekilde, I2C dönüştürücü kartının arkasındaki mavi renkli potansiyometreyi küçük bir tornavida yardımıyla döndürerek kontrast ayarını yapmalısınız; aksi takdirde ekran karakterleri aşırı soluk veya tamamen görünmez kalabilir.
I2C Adres Tarama Kodu
Bu I2C Tarayıcı yazılımı, mikrodenetleyiciye bağlı aktif I2C cihazlarının sayısını ve benzersiz adreslerini tarayarak bulur. Kodu yükledikten sonra Seri Port’ta adresi not edin ve ana proje kodundaki adres parametresiyle güncelleyin.
I2C LCD Proje Kodu
Aşağıdaki örnek kodda popüler kütüphane olan LiquidCrystal_I2C kullanılmaktadır. Adres parametresini (örn: 0x27), tarayıcı kodundan elde ettiğiniz değerle değiştirmeyi unutmayın.
I2C Devresi Olmayan Standart LCD Ekran Kullanımı
Dönüştürücü modülü bulunmayan standart LCD ekranlar, başlangıç seviyesindeki projelerde oldukça yaygın kullanılsa da çok sayıda bağlantı kablosuna ihtiyaç duyarlar. Bu ekranlarda kontrast ayarı yapmak için harici bir potansiyometre veya gerilim bölücü direnç ağı kullanılması zorunludur.
Rehberimizin bu kısmında, 4-bit iletişim modunda karakter ve metin görüntülemenin temellerini öğreneceğiz. Sonraki bölümde ise LiquidCrystal kütüphanesinin tüm parametrik fonksiyonlarını ve özel sembol oluşturma yöntemlerini inceleyeceğiz.
Gerekli Malzemeler
- Arduino UNO Geliştirme Kartı
- 16×2 Karakter LCD Ekran (Standart Paralel Portlu)
- 10 kΩ Potansiyometre (Kontrast ayarı için)
- 220 Ω Direç (Arka ışık LED’ini korumak için)
- Breadboard ve Çok Sayıda Jumper Kablo
Görüldüğü üzere, standart bağlantı yöntemi mikrokontrolcü üzerinde çok fazla dijital pini işgal eder. Pin tasarrufu sağlamak ve devreyi sadeleştirmek için projelerinizde I2C dönüştürücü modül kullanmanızı tavsiye ederiz.
Bağlantı Şeması

Ekranı 4-bit modunda süreceğimiz için D0-D3 pinlerini boşta bırakıyoruz. R/W (Read/Write) pinini doğrudan toprağa (GND) bağlayarak ekranı sürekli “Yazma” modunda tutuyoruz.
| Arduino UNO Pin | 16×2 LCD Ekran Pin | Açıklama / Görevi |
|---|---|---|
| GND | VSS (Pin 1) | Şasi / Toprak |
| 5V | VDD (Pin 2) | Lojik Besleme Voltajı (+5V) |
| Potansiyometre Çıkışı | V0 (Pin 3) | Kontrast Ayar Pini |
| D2 | RS (Pin 4) | Register Select (Veri/Komut Seçimi) |
| GND | R/W (Pin 5) | Read/Write (Yazma Modu için GND) |
| D3 | E (Pin 6) | Enable (Etkinleştirme Pini) |
| D4, D5, D6, D7 | D4, D5, D6, D7 (Pin 11-14) | 4-Bit Veri Hatları |
| 5V (220Ω Direnç ile) | A / LED+ (Pin 15) | Arka Işık Anot (+) |
| GND | K / LED- (Pin 16) | Arka Işık Katot (-) |
Arka Işık (Backlight) Koruması: Çoğu LCD ekranda arka ışık LED’i için entegre bir koruma direnci bulunmaz. Pin 15 (Anot) ile +5V arasına mutlaka 220Ω değerinde bir seri koruma direnci eklemelisiniz. Aksi takdirde arka ışık LED’i yüksek akımdan dolayı kalıcı olarak zarar görebilir.
Bağlantıları tamamladıktan sonra, ekranda karakterlerin net görünmesi için 10 kΩ potansiyometreyi yavaşça çevirerek en uygun kontrast değerini ayarlayın.
Standart LCD Proje Kodu
Standart LiquidCrystal kütüphanesini kullanarak ekranı test etmek için aşağıdaki kodu yükleyebilirsiniz:
Kütüphane eklendikten sonra, LiquidCrystal lcd(RS, E, d4, d5, d6, d7) fonksiyonunu çağırarak bir LCD nesnesi oluştururuz. Bu nesneye dilediğiniz ismi verebilirsiniz (örn: lcd, menu_ekrani vb.).
Gelişmiş LCD Kütüphanesi Fonksiyonları
Arduino LiquidCrystal kütüphanesi, ekran kontrolünü profesyonel hale getiren birçok dahili fonksiyona sahiptir. İşte en sık kullanılan fonksiyonlar ve işlevleri:
clear()
Ekrandaki tüm karakterleri temizler ve imleci (cursor) sol üst köşeye (0,0 koordinatı) taşır. Dinamik veri güncellemelerinde ekranın temiz kalmasını sağlar.
home()
Ekran içeriğini silmeden imleci başlangıç noktasına (sol üst köşe) konumlandırır.
cursor()
Ekran üzerinde imlecin konumunu belirten alt çizgi (_) şeklinde bir göstergeyi aktif hale getirir.
noCursor()
Alt çizgi şeklindeki imleç göstergesini gizler. Aşağıdaki örnekte yanıp sönen bir imleç uygulamasını inceleyebilirsiniz.
blink()
Karakter yazılacak aktif konumda yanıp sönen blok (kare şeklinde) bir imleç oluşturur.
noBlink()
Blok stili yanıp sönen imleci devre dışı bırakır. Aşağıdaki örnek, imleci 5 saniye boyunca yanıp söndürür ve ardından 2 saniye kapatır.
display()
Ekranı ve üzerindeki verileri yeniden görünür kılar (veri akışını ve görünümü açar).
noDisplay()
Ekranı geçici olarak kapatır ancak bellekteki verileri silmez. display() fonksiyonu çağrıldığında mevcut metin aynen geri gelir.
Aşağıdaki kod örneği, ekrandaki yazıyı periyodik olarak kapatıp açarak yanıp sönen bir metin efekti oluşturur.
write()
Ekrana ham byte veya özel oluşturulmuş karakterleri (ikili veri formatında) yazmak için kullanılır.
scrollDisplayLeft()
Ekrandaki tüm içeriği ve imleci bir sütun sola kaydırır. Döngüsel olarak kullanıldığında akan yazı (marquee) efekti elde edilir.
scrollDisplayRight()
Ekrandaki tüm yazıları ve imleci bir sütun sağa kaydırır.
autoscroll()
Otomatik kaydırma modunu aktif hale getirir. Bu modda ekrana yazılan her yeni karakter, bir önceki karakteri kaydırarak aynı koordinatta yeni karakterin çıkmasını sağlar.
noAutoscroll()
Otomatik kaydırma özelliğini kapatarak standart imleç ilerleme moduna geri döner.
leftToRight()
Yazı yazma yönünü soldan sağa olacak şekilde (varsayılan batı dilleri modu) ayarlar.
rightToLeft()
Yazı yazma yönünü sağdan sola doğru (Arapça, İbranice vb.) akacak şekilde ayarlar.
LCD Ekranda Özel Karakterler ve Türkçe Semboller Oluşturmak
Kütüphanenin sunduğu createChar() fonksiyonu sayesinde, standart ASCII karakter tablosunda yer almayan özel sembolleri, logoları veya Türkçe karakterleri (ğ, ş, ı, ö, ç, ü) kendiniz tasarlayarak ekrana yazdırabilirsiniz.
Teknik Altyapı: Popüler Hitachi HD44780 denetleyicisini temel alan karakter LCD ekranlar iki farklı hafıza yapısına sahiptir: CGROM (Character Generator ROM) ve CGRAM (Character Generator RAM). CGROM standart 8-bitlik karakter kalıplarını içerirken, CGRAM ise kullanıcının kendi tanımladığı özel desenleri saklar. 5×8 piksel matrisli ekranlarda en fazla 8 adet (0-7 numaralı indisler arasında) özel karakter tanımlanabilir.
Özel Karakter Oluşturma Kod Örneği
Aşağıdaki örnekte 8 adet özel sembolün (örneğin gülen yüz, ok işaretleri ve benzeri piksellerin) 5×8 piksel matrisi üzerinde nasıl tanımlandığını ve ekranda nasıl çağrıldığını inceleyebilirsiniz:
Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.
