Arduino ile LCD Ekrana Yazı Yazdırma
Robotik projeler geliştirirken sensörlerden okunan sıcaklık, mesafe, nem gibi verileri veya cihazın çalışma durumunu görmek için bilgisayara ve Seri Port Ekranına bağımlı kalmak projelerin taşınabilirliğini kısıtlar. Projenizi bağımsız bir son kullanıcı ürününe dönüştürmenin en estetik ve profesyonel yolu devreye bir 16x2 Karakter LCD Ekran eklemektir.
Peki 16x2 LCD ekran nedir? Klasik 16 kablolu bağlantı çilesinden bizi kurtaran I2C Modülü nasıl çalışır? Ekranın I2C adresi nasıl bulunur ve ekrana Türkçe karakter destekli metinler nasıl yazdırılır? Bu kapsamlı rehberde tüm detayları inceliyoruz.
1. 16x2 Karakter LCD Ekran Nedir?
16x2 LCD ekran; her biri 5x8 pikselden oluşan karakter kutucukları sayesinde 2 satırda toplam 32 karakter (her satırda 16 harf/rakam) gösterebilen sıvı kristal bir ekrandır.
Geçmişte bu ekranları Arduino'ya bağlamak için en az 10-12 adet jumper kabloyu tek tek bağlamak ve kontrast ayarı için bir potansiyometre lehimlemek gerekiyordu.
Günümüzde ise ekranın arkasına fabrikasyon olarak lehimlenen PCF8574 I2C Dönüştürücü Kartı sayesinde ekran bağlantısı sadece 4 adet kabloya inmiştir!
2. I2C Modüllü LCD Ekran Pinout ve Bağlantı Şeması
| LCD I2C Pini | Arduino Uno Pini | Görevi |
|---|---|---|
| GND | GND | Toprak bağlantısı |
| VCC | 5V | Besleme gerilimi |
| SDA | A4 | Veri iletim hattı (Serial Data) |
| SCL | A5 | Saat senkronizasyonu (Serial Clock) |
3. Ekranın I2C Adresini Bulma (I2C Scanner)
Çoğu 16x2 LCD ekran fabrikasyon olarak `0x27` veya `0x3F` hex adresine sahiptir. Yanlış adres tanımlanırsa ekrana elektrik gelse bile yazılar görünmez.
#include <Wire.h> void setup() { Wire.begin(); Serial.begin(9600); Serial.println("
I2C Cihazlari Taraniyor..."); for (byte address = 1; address < 127; address++) { Wire.beginTransmission(address); if (Wire.endTransmission() == 0) { Serial.print("Buldum! I2C Cihaz Adresi: 0x"); if (address < 16) Serial.print("0"); Serial.println(address, HEX); } }
}
void loop() {}4. Gerekli Kütüphanenin Kurulması
Arduino IDE menüsünden:
5. Tam ve Çalışan Arduino C++ Kodları
/* * RobotKodla.com - LCD Ekran Dersi * Proje: 16x2 I2C LCD Ekrana Yazı Yazdırma */ #include <Wire.h>
#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); int sayac = 0; void setup() { lcd.init(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("RobotKodla.com"); lcd.setCursor(0, 1); lcd.print("Hos Geldiniz!"); delay(2000); lcd.clear();
} void loop() { lcd.setCursor(0, 0); lcd.print("Calisma Suresi:"); lcd.setCursor(0, 1); lcd.print("Saniye: "); lcd.print(sayac); sayac++; delay(1000);
}6. Sık Yaşanan Sorun: "Yazılar Görünmüyor, Sadece Beyaz Kareler Var!"
Ekranın arkasındaki mavi I2C modülünün üzerinde küçük mavi bir kutu ve ortasında pirinç renkli bir vida (kontrast trimpotu) bulunur. Düz uçlu küçük bir tornavidayla bu vidayı sağa-sola yavaşça çevirerek kontrastı ayarlayın. Yazıların anında netleştiğini göreceksiniz!
7. LCD Ekranda Özel Karakter ve Türkçe Harf Oluşturma
Arduino, ekranın CGRAM hafızasına 8 adet özel piksel deseni yüklemenize izin verir:
byte kalp[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000
}; // setup içinde: lcd.createChar(0, kalp);
// loop içinde: lcd.write(0);8. LCD Ekranın Ömrünü Uzatma ve Enerji Tasarrufu
9. LCD Ekranlarda Karşılaşılan Donanımsal Sorunlar ve Çözüm Tablosu
| Sorun Belirtisi | Olası Donanımsal Neden | Pratik Çözüm Adımı |
|---|---|---|
| Ekranda sadece üst satırda beyaz kareler var | Kontrast ayarsız veya I2C adresi yanlış | Trimpotu çevirin, I2C scanner ile adresi doğrulayın. |
| Arka ışık yanmıyor | I2C modülündeki LED jumper takılı değil | Modülün arkasındaki iki iğneli siyah jumper başlığını takın. |
| Ekranda garip karakterler çıkıyor | Gevşek SDA/SCL kabloları | Kabloları yenileyin, motor hatlarını ekrandan ayırın. |
10. LCD Ekranda Özel Karakter ve Türkçe Harf Oluşturma Sanatı
16x2 LCD ekranların dahili karakter tablosunda (ROM) İngilizce alfabe ve semboller bulunur. Bu nedenle doğrudan "Ş, İ, Ğ, Ç, Ö, Ü" yazdırmaya çalıştığınızda ekranda anlamsız semboller veya boşluklar görünür.
Arduino, ekranın CGRAM (Character Generator RAM) hafızasına 8 adet özel piksel deseni tanımlamanıza olanak tanır:
byte kalp[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000
}; // setup içinde tanımla:
lcd.createChar(0, kalp); // loop içinde ekrana bas:
lcd.write(0);11. LCD Ekran Sorun Giderme Tablosu
| Sorun Belirtisi | Olası Donanımsal Neden | Kesin Çözüm Adımı |
|---|---|---|
| Ekranda sadece üst satırda beyaz kareler var | Kontrast trimpotu ayarsız veya I2C adresi yanlış | Trimpotu tornavidayla çevirin, I2C scanner ile adresi (0x27 / 0x3F) doğrulayın. |
| Arka ışık hiç yanmıyor | I2C modülündeki LED jumper başlığı takılı değil | Modülün arkasındaki iki iğneli siyah jumper başlığının takılı olduğunu kontrol edin. |
| Ekranda garip yabancı karakterler çıkıyor | Gevşek SDA/SCL kabloları veya sinyal gürültüsü | Kabloları yenileyin, motorların güç hattını LCD hattından ayırın. |
| Yazılar silik ve titrek görünüyor | Yetersiz 5V beslemesi | Arduino'ya harici adaptör takın veya USB portunu değiştirin. |
12. Kapsamlı Sıkça Sorulan Sorular (SSS)
LCD ekranda I2C modülü olmadan bağlantı yapılabilir mi?
Evet, yapılabilir. Ancak bu durumda Arduino'nun RS, E, D4, D5, D6, D7 olmak üzere en az 6 adet dijital pini harcanır ve breadboard üzerinde 16 adet jumper kablo bağlamak gerekir. Bu sebeple günümüzde neredeyse tüm projelerde 4 pinli I2C modülleri tercih edilmektedir.
LCD ekranın arkasındaki potansiyometre ne işe yarar?
O mavi küçük trimpot, sıvı kristal piksellerin voltaj referansını (kontrastını) ayarlar. Trimpot yanlış ayarlanmışsa ekranda ya hiçbir şey görünmez ya da her yer siyah kutu olur.
Ekrandaki yazıyı kayan yazı (marquee efekti) yapabilir miyim?
Evet! `LiquidCrystal_I2C` kütüphanesinin dahili `lcd.scrollDisplayLeft();` ve `lcd.scrollDisplayRight();` fonksiyonlarını bir `for` döngüsü içinde kullanarak haber bülteni alt yazısı gibi kayan metinler tasarlayabilirsiniz.
Sonuç
16x2 I2C LCD ekran, Arduino projelerinize profesyonel bir arayüz kazandırır. Sıcaklık ve nem değerlerini, mesafe ölçümlerini veya şifreli kapı kilitlerinin durum mesajlarını bu ekranda göstererek harika ürünler geliştirebilirsiniz. Sitemizdeki uygulamalı [Dersler](/dersler) ile LCD ekranlı ileri seviye projeleri keşfetmeye devam edin!