arduino master slave

Tutorial I2C Arduino Master dan Arduino Slave

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

// Protus Tanuhandaru
// www.progresstech.co.d
#include <Wire.h> // Memanggil library untuk komunikasi I2C
#define alamatSlave 10 // Mendefinisikan alamat slave
int dataSlave = 0; // Menampung data komunikasi antara master dan slave

void setup() {
  Wire.begin(alamatSlave); // Memulai komunikasi I2C pada PIN A4 dan A5
  Wire.onRequest(requestEvents); // Memanggil fungsi ketika Slave menerima nilai dari Master
  Wire.onReceive(receiveEvents); // Memanggil fungsi ketika Master meminta nilai dari Slave
  Serial.print("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() {
}

Skema

Leave a Reply

Your email address will not be published. Required fields are marked *