İçindekiler
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
| Malzeme | Adet | Açıklama |
|---|---|---|
| Arduino UNO / MEGA / Nano | 1 | Kontrol kartı |
| 16×2 LCD + I2C modülü | 1 | I2C arayüzlü ekran |
| Breadboard | 1 | Bağlantı yüzeyi |
| Jumper kablolar | 4 | Bağlantı için |
Bağlantı Şeması
I2C LCD bağlantısı oldukça basittir. Sadece 4 kablo gerekir:
| I2C LCD Pin | Arduino UNO Pin |
|---|---|
| GND | GND |
| VCC | 5V |
| SDA | A4 |
| SCL | A5 |
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.
