Home » Blog » Tutorial I2C Arduino Master dan Arduino Slave – Bahasa Indonesia

Tutorial I2C Arduino Master dan Arduino Slave – Bahasa Indonesia

Dalam situasi tertentu, kita membutuhkan lebih dari satu Micro Controller. Satu digunakan sebagai master dan lainnya sebagai slave.

Mengapa pengaturan demikian dibutuhkan?

Mungkin kita ingin menggunakan banyak komponen, namun sayangnya tidak semua bisa disambungkan ke micro controller kita. Misalnya micro controller papan Arduino. Mungkin karena PIN-nya tidak cukup. Arusnya tidak cukup kuat. Tidak cukup voltase.

Dengan pengaturan master dan slave, kita juga bisa mengkombinasikan Arduino dengan papan yang berbeda. Misalnya dengan Raspberry Pi.

Tutorial ini menjelaskan bagaimana kita bisa membuat pengaturan Master dan Slave untuk rangkaian komunikasi dengan menggunakan protokol I2C. Kita menggunakan dua papan Arduino. Satu sebagai master. Satu sebagai slave.

Dua papan Arduino ini akan berkomunikasi antara satu dan yang lainnya melalui I2C Synchronous serial protocol hanya melalui dua jalur kabel. Papan Arduino Master mengendalikan papan Arduino Slave.

Kita juga bisa menggunakan komponen apapun, misalnya sensor, sebagai slave-nya selama komponen tersebut mendukung operasi I2C atau I square c. Sebagai contoh LCD 16×2 yang memiliki modul I2C ini.

Kode Arduino Master


// Protus Tanuhandaru
// www.progresstech.co.id 

#include <Wire.h> // Memanggil library untuk komunikasi I2C
#define alamatSlave 10 // Alamat Slave untuk Arduino 
int dataMaster = 0; // Variabel untuk menampung data komunikasi antara master dan slave 

void setup() {
  Wire.begin(); // Memulai komunikasi I2C pada PIN A4 dan PIN A5
  Serial.begin(9600); // Memulai komunikasi serial pada baud rate 9600
  Serial.println("ProgressTech");
}

void loop() {
  // Master mengirimkan nilai ke Slave
  Wire.beginTransmission(alamatSlave); // Master memulai pengiriman data ke alamat slave
  Wire.write(dataMaster); // Master menuliskan data
  Serial.print("Master mengirimakn nilai Integer : "); // Menampilkan konten pada Serial Monitor 
  Serial.println(dataMaster); // Menampilkan konten pada Serial Monitor 
  Wire.endTransmission(); // Mengakiri sesi pengiriman data 
  delay(1000);

  // Meminta nilai dari slave 
  Wire.requestFrom(alamatSlave, 1); // Master meminta data dari Slave
  dataMaster = Wire.read(); // Master membaca data yang dikirimkan oleh Slave
  Serial.print("Slave mengirimkan nilai : "); // Menampilkan konten pada Serial Monitor 
  Serial.println(dataMaster); // Menampilkan konten pada Serial Monitor
  delay(1000);
}

Kode Arduino Slave

// Protus Tanuhandaru
// www.progresstech.co.id 

#include <Wire.h> // Memanggil library untuk komunikasi I2C
#define alamatSlave 10 // Alamat Slave untuk Arduino 
int dataSlave = 0; // menampung data komunikasi antara master dan slave 

void setup() {
  Wire.begin(alamatSlave); // Memulai komunikasi I2C pada PIN A4 dan PIN A5
  Wire.onRequest(requestEvents); // Memanggil fungsi ketika Slave menerima nilai dari Master
  Wire.onReceive(receiveEvents); // Memanggil fungsi ketika Master meminta nilai dari Slave
  Serial.println("ProgressTech");
  Serial.begin(9600); // Memulai komunikasi serial pada baud rate 9600
  
}

void requestEvents() {
  dataSlave = dataSlave + 1; // Menambahkan angka satu ke variabel komunikasi antara master dan slave
  Serial.println("Slave menerima permintaan dari Master");
  Serial.print("Mengirimkan nilai : "); // Menampilkan konten pada Serial Monitor 
  Serial.println(dataSlave); // Menampilkan konten pada Serial Monitor 
  Wire.write(dataSlave); // Slave mengirimkan data kepada Master
}

void receiveEvents(int jumlahByte) {
  dataSlave = Wire.read();
  Serial.print("Nilai diterima : "); // Menampilkan konten pada Serial Monitor
  Serial.println(dataSlave); // Menampilkan konten pada Serial Monitor
}

void loop() {
}

Leave a Reply

Your email address will not be published.