LCD Gösterge I2C Arabirimi Adresi Nasıl Tespit Edilir?

LCD göstergelerimizi bir sürü kablo bağlama zahmetine katlanmadan sadece 2 güç kablosu ve 2 adette bağlantı kablosu ile bağlama kolaylığı nedeniyle I2C arabirimi ile kullanıyoruz.

I2C arabirimi olmadan aşağıdaki gibi bağlantı yapmak zorundayız. Kablo kalabalığı sizi rahatsız etmiyorsa sıkıntı yok.

Arduino_1602_LCD_connection

Bu durumdan kurtulmak için LCD göstergemize I2C arabirim taktığımızda ise aşağıdaki gibi bir bağlantı yeterli olmaktadır. VCC, GND, SDA, SCL olmak üzere toplam 4 bağlantı noktası vardır. Arduino UNO kartınız varsa SDA Analog4, SCL ise Analog5 pinine bağlanıyor. UNO R3 son sürüm kartlarda ise digital pinlerin sonunda SDA ve SCL pinleri ayrıca eklenmiştir. Onlar da kullanılabiliyor.

Aşağıda breadboard üzerinde gösterilen aparat I2C arabirimidir. Bunu kolayca LCD göstergenizin bağlantı noktalarına lehimleyebilirsiniz. Bu arabirim çok pahalı değil. Hatta hazır bu arabirime sahip bulunan LCD göstergeleri de satın alabilirsiniz.

lcd_1602_cizim

Bu şekilde I2C arabirimi kullandığınızda I2C kütüphanesini eklemeniz gerekecektir. İlgili kütüphaneyi aşağıdaki linke tıklayarak indirebilirsiniz.

İndir “I2C Kütüphane (LiquidCrystal_I2C_AvrI2C.zip)” LiquidCrystal_I2C_AvrI2C.zip – 7183 defa indirildi – 7 KB

Bu kütüphane ile ilgili örnek 2 satır, 16 karakter LCD (1602LCD) için Arduino kodu aşağıdaki gibidir.

#include <LiquidCrystal_I2C_AvrI2C.h>
 
LiquidCrystal_I2C_AvrI2C lcd(0x27,16,2);
 
void setup()
{
  lcd.begin();
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("Hello, world!"); //İlk satıra yazalım
  lcd.setCursor(0,1);
  lcd.print("Arduino Rocks!"); //İkinci satıra yazalım
}
 
void loop()
{
}

Yukarıdaki kodu çalıştırdığımızda İlk satıra Hello World, ikinci satıra ise Arduino Rocks! yazacaktır.

Ancak bir baktınız LCD panelde hiçbir şey görememiş olabilirsiniz. Öncelikle I2C üzerinde mavi renkli potansiyometreyle oynayarak ışığı ile oynayın. Halen bir şey görünmüyorsa I2C arabirim adresi genelde kullanılan 0x27 olmayabilir. Mesela bizdekilerden bir tanesi 0x3f kullanıyor. Bu çeşitli varyasyonlar olabilir. Üzülmeyin sizinkinin hangi adres kullandığını bulmak için aşağıdaki Arduino kodunu çalıştırarak , Serial ekranında I2C chip hangi adresi kullanıyor size gösterecektir.

Aşağıdaki kodu içeren dosyayı (I2C_LCD_Tip_Belirleme.inoindirmek için aşağıdaki linke tıklayınız.

İndir “I2C_LCD_Tip_Belirleme” I2C_LCD_Tip_Belirleme.ino – 1399 defa indirildi – 919 B

#include <Wire.h>

boolean DeviceFound = false;
byte error, address;

void setup()
{
    Wire.begin();
    Serial.begin(9600);
    Serial.println("\nI2C Araniyor...");
  
    for(address = 0; address <= 127; address++ )
    {
       Wire.beginTransmission(address);
       error = Wire.endTransmission();

       if (error == 0)
       {
         Serial.print("I2C cihaz bulundu. Adresi: 0x");
         if (address<16)   Serial.print("0");
         Serial.println(address,HEX);
  
         DeviceFound = true;
         break;
       }
       else if (error==4)
       {
         Serial.print("Bilinmeyen hata olustu. Adres: 0x");
         if (address<16)  Serial.print("0");
         Serial.println(address,HEX);
       }
    }
    if (DeviceFound == false)
       Serial.println("Herhangi bir bagli I2C bulunamadi\n");
    else
       Serial.println("Tamamlandi. Kolay gelsin.\n");          
}
 
void loop()
{
}

Çalıştığında her şey normal ise aşağıdaki Serial ekranında adresi göreceksiniz.

I2C-adresi

Orada gördüğünüz 0x27 veya benzeri adresi Arduino kodunuzda LCD sınıfın tanımında yazmanız gerekecek. Örnek:

// Parametreler: (Adres, LCD satır karakter sayısı, LCD satır sayısı)

LiquidCrystal_I2C_AvrI2C lcd(0x27,16,2);