
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 :
- I2C LCD Backpack
- I2C OLED LCD
- Contoh Program Modul RTC DS3231
- Contoh Program Modul I2C ADC ADS1115
- Contoh Program Sensor Cahaya BH1750 Menggunakan Arduino
- 16 Channel PWM/Servo Driver PCA9685
- dll
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 +++++++
Leave a Reply