i2c tarayici

Arduino ile I2C bağlantı adreslerinin tespit edilmesi

Arduino ile yapılan projelerimizde bazı sensörleriniz yada en çok kullanılan bazı LCD türleri bildiğiniz gibi seri bağlantı ile haberleşmektedir buda genellikle I2C iki pinli bağlantılıdır (2 wire connection). i2c tarayiciArduino modellerine göre bu bağlantıyı SDA-SCL bağlantılarına bağlamamız gerekmekte ve ekte bulduğunuz kütüphaneyi yükleyerek seri haberleşen sensörler ve LCD ler ile haberleşebiliriz. Şimdi konumuza gelelim. Yeni aldığımız sensörümüz yada LCD mizi bağladık ama  bu pinleri kullanabilmemiz için LCD nin adresini bilmemiz gerekiyorki o LCD ile irtibata geçsin,yada birden fazla seri bağlantı gerçekleştiren sensör yada LCDniz var bunların bilgilerini ayrı ayrı almanız gerekiyor o zaman adreslerini bilmeden bunu yapmanızın imkanı yok. Adress tesbitini çok kolay bir yöntemle yapmanız mümkün.

Nasıl adres tesbiti yaparız?

Arduinomuz ile bağlantısını gerçekleştirdiğimiz malzemenin adresini arduinomuz ile yapacağımız küçük bir program ile tespiti yapılabiliyor. Bu program bütün adressleri kontrol ederek HEXADESİMAL adresi çıkarıyor şekilde gördüğünüz resimde 3 tane seri  iletişim gerçekleştiren malzemenin adresleri vardır.

Artık gerisi bizim programlama ve projelerimize adresleri belirtmektir.

// --------------------------------------
// www.arduinom.org sitesinde yayınlanmıştır.

#include <Wire.h>


void setup()
{
  Wire.begin();

  Serial.begin(9600);
  Serial.println("\nI2C bulucu");
}


void loop()
{
  byte error, address;
  int nDevices;

  Serial.println("kontrol ediliyor...");

  nDevices = 0;
  for(address = 1; address < 127; address++ ) 
  {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0)
    {
      Serial.print("I2C bulunnamadı adres 0x");
      if (address<16) 
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");

      nDevices++;
    }
    else if (error==4) 
    {
      Serial.print("Bilinmeyen hata ile karsilasildi. 0x");
      if (address<16) 
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("I2C bulunamadı \n");
  else
    Serial.println("bitti\n");

  delay(5000);           
}

Boş zamanlarda arduino ile uğraşan kendi halinde bir Öğretmen.

Bir Cevap Yazın

Time limit is exhausted. Please reload CAPTCHA.