Program I2C Scanner Untuk Mengetahui I2C Address Dari Device Atau Module Elektronik

Spread the love

Apa itu I2C

I2C adalah protokol serial untuk antarmuka dua kawat (two-wire) untuk menghubungkan perangkat / device / modul elktronik kecepatan rendah seperti mikrokontroler, EEPROMs, konverter A / D dan D / A, antarmuka I / O dan periferal serupa lainnya dalam embedded sistem.

Protokol I2C diciptakan oleh Philips dan sekarang digunakan oleh hampir semua produsen IC besar. Setiap perangkat I2C slave membutuhkan alamat agar bisa berkomunikasi dengan perangkat I2C master yang bertindak sebagai pengontrol komunikasi data.

Kelebihan Protokol I2C

  • Sistem menjadi lebih sederhana karena hanya menggunakan dua kawat (two-wire) untuk berkomunikasi dengan banyak periferal. Dengan syarat masing-masing device / periferal mempunyai I2C Address yang berbeda.
  • Menghemat I/O port dari Mikrokontroler / Minimum Sistem karena hanya menggunakan port I2C.

Seringkali peralatan / modul elektronik I2C yang ada di pasaran tidak disertakan informasi mengenai address nya. Padahal I2C Address merupakan prasyarat utama agar kita bisa mengakses dan berkomunikasi dengan peralatan atau modul tersebut.

Pada akhir artikel ini, kami sertakan kode program atau sketch Arduino untuk mendeteksi atau mengetahui I2C Address dari modul atau device elektronik yang kita tidak mengetahui I2C Addressnya.

Contoh Device / Module Elektronik Menggunakan Protokol I2C

Berikut ini adalah contoh beberapa device / modul elektronik yang interfacenya menggunakan protokol I2C beserta contoh programnya :

Kode Program

// I2C Scanner
 // Written by Nick Gammon
 // Date: 20th April 2011
 #include <Wire.h>
 void setup() {
   Serial.begin (9600);
 // Leonardo: wait for serial port to connect
   while (!Serial) 
     {
     }
 Serial.println ();
   Serial.println ("I2C scanner. Scanning …");
   byte count = 0;
 Wire.begin();
   for (byte i = 1; i < 120; i++)
   {
     Wire.beginTransmission (i);
     if (Wire.endTransmission () == 0)
       {
       Serial.print ("Found address: ");
       Serial.print (i, DEC);
       Serial.print (" (0x");
       Serial.print (i, HEX);
       Serial.println (")");
       count++;
       delay (1);  // maybe unneeded?
       } // end of good response
   } // end of for loop
   Serial.println ("Done.");
   Serial.print ("Found ");
   Serial.print (count, DEC);
   Serial.println (" device(s).");
 }  // end of setup
 void loop() {}

+++++++ Semoga Bermanfaat +++++++

Be the first to comment

Leave a Reply

Alamat email Anda tidak akan dipublikasikan.


*