Web sitemize hoşgeldiniz, 21 Haziran 2025
muratdonmez.com.tr
Anasayfa » IOT » Modüllerin I2C Adresini Nasıl Bulurum?

Modüllerin I2C Adresini Nasıl Bulurum?

Modüllerin I2C Adresini Nasıl Bulurum?

Arduino veya ESP8266 ile I2C (Inter-Integrated Circuit) protokolü üzerinden haberleşen bir cihaz kullanırken, cihazın doğru I2C adresini bilmek önemlidir. I2C cihazları genellikle benzersiz bir adrese sahiptir ve bu adres, veri iletimini gerçekleştirebilmek için gereklidir. Ancak bazı durumlarda cihazın I2C adresini bilmek zor olabilir, I2C adresi cihazın donanım ayarlarıyla (örneğin, jumper veya dip switch’ler ile) veya yazılımla değiştirebilir.

Bu yazımda, Arduino kullanarak bağlı bir I2C cihazının adresini nasıl bulabileceğinizi anlatacağım. Örnek bir kod ve açıklamalarla, I2C cihazınızın adresini nasıl tespit edebileceğinizi daha kolay öğreneceksiniz.

Gerekli Malzemeler:

  • Arduino kartı (Uno, Mega, Nano vb.)
  • I2C uyumlu cihaz (LCD ekran, sensör vb.)
  • Bağlantı kabloları

I2C Adresini Bulmak İçin Adımlar

  1. Arduino’yu Hazırlayın: Arduino’nuzu bilgisayarınıza bağlayın ve doğru portu seçtiğinizden emin olun.
  2. Arduino IDE’yi Açın: Arduino IDE programını açın.
  3. Kodları Yükleyin: Aşağıdaki örnek kodu Arduino’ya yükleyerek I2C cihazının adresini bulabilirsiniz.

Örnek Kod:

Aşağıdaki kod, Arduino’ya bağlı tüm I2C cihazlarını tarar ve her birinin adresini seri monitöre yazdırır.

#include <Wire.h>

void setup() {
  // Seri haberleşme başlatılıyor
  Serial.begin(9600);
  // I2C iletişimi başlatılıyor
  Wire.begin();
  
  Serial.println("\nI2C cihaz tarayıcısı başlatılıyor...");
  
  // Bağlı cihazların I2C adreslerini bulmak için 
  // 0x03'ten 0x77'ye kadar tüm adresler kontrol ediliyor
  for (byte i = 3; i < 120; i++) {
    Wire.beginTransmission(i);
    byte error = Wire.endTransmission();
    
    if (error == 0) {
      // Cihaz bulunduysa, adres seri monitöre yazdırılıyor
      Serial.print("Cihaz bulundu! Adres: 0x");
      Serial.println(i, HEX);
    }
    delay(50);  // Kısa bir süre bekleyip devam ediyoruz
  }
}

void loop() {
  // loop içinde herhangi bir işlem yaptırmıyoruz.
}

Açıklamalar:

  • Wire.begin(): Bu komut I2C protokolünü başlatır.
  • Wire.beginTransmission(i): Belirli bir I2C adresine veri göndermeyi başlatır. Buradaki i değeri 0x03 ile 0x77 arasında bir adres olabilir. (0x00-0x02 arası genellikle özel adreslerdir.)
  • Wire.endTransmission(): I2C iletişimini sonlandırır. Eğer bu işlem başarılı olursa, cihaz o adreste mevcut demektir.
  • Serial.println(i, HEX): Bulunan adresi hexadecimal formatta seri monitöre yazdırır.

Seri Monitörde Sonuçlar:

Kod çalıştırıldıktan sonra, seri monitörü açtığınızda bağlı cihazların I2C adreslerini görebileceksiniz. Örneğin:

I2C cihaz tarayıcısı başlatılıyor...
Cihaz bulundu! Adres: 0x3C
Cihaz bulundu! Adres: 0x27
Cihaz bulundu! Adres: 0x68

Burada, 0x3C, 0x27 ve 0x68 gibi adresler, bağlı olan I2C cihazlarının adresleridir.

Yukarıda vermiş olduğum kod, Arduino’ya bağlı olan I2C cihazlarının adreslerini kolayca bulmanızı sağlayacaktır. Adresleri öğrendikten sonra, bu adresleri kullanarak I2C cihazlarınızla iletişim kurabilirsiniz. Eğer cihazınızın adresini yukarıdaki kod ile bulamazsanız, cihazın bağlantılarını kontrol edebilir, bağlatı sorunu yoksa datasheet’ine veya kullanma kılavuzuna bakarak bu adresin nasıl belirleneceğini öğrenebilirsiniz.

I2C

 

Arduino ve I2C Cihazı Bağlantı Devre Şeması Açıklaması:

Devrede Arduino Uno, Nano veya Mega kullanabilirsiniz. Bu şemada, bir Arduino Uno ve bir LCD ekran (örneğin, 16×2 LCD ekran) kullanıldığını varsayıyoruz.

Bağlantılar aşağıdaki gibi olacaktır:

  • SDA (Data): LCD ekranın SDA pini Arduino’nun A4 pinine (Uno’da) bağlanır.
  • SCL (Clock): LCD ekranın SCL pini Arduino’nun A5 pinine (Uno’da) bağlanır.
  • VCC: I2C cihazının güç bağlantısı. Genellikle 5V veya 3.3V olabilir.
  • GND: Toprak bağlantısı, Arduino ve cihaz arasında ortak olmalıdır.

I2C protokolüyle ilgili data detaylı bilgi edinmek isterseniz, I2C Protokolü Nedir, Nasıl Çalışır? yazıma bakabilirsiniz.

Yazımı okuduğunuz için teşekkür ederim, umarım yardımcı olabilmişimdir.

Etiketler:

BU KONUYU SOSYAL MEDYA HESAPLARINDA PAYLAŞ
Yorumlar

Henüz yorum yapılmamış.

Yorum Yaz