Senin, 22 Juli 2019

Komunikasi Master Slave Arduino dengan I2C

Terkadang karena keterbatasan jumlah pin pada mikrokontroller arduino uno, kita memerlukan tambahan pin lain. Selain itu, terkadang kita juga menemui masalah ketika ingin mengerjakan dua proses sekaligus dalam waktu yang bersamaan.

Salah satu solusi untuk mengatasi masalah tersebut adalah dengan menambah jumlah arduino. Kemudian untuk mengirim data dari arduino pertama ke arduino kedua dibuat komunikasi i2c. Salah satu arduino menjadi master dan arduino yang lain menjadi slave.


Contoh kasus adalah ketika kita ingin membuat rpm meter sekaligus sebagai pengirim data ke komputer dan dikerjakan dalam waktu yang bersamaan. Oleh karena itu, kita perlu membagi kedua proses tersebut.
 
Arduino yang pertama bertugas sebagai rpm meter kemudian mengirim data rpm ke arduino kedua dan arduino kedua bertugas untuk mengirimkan data ke komputer.

Untuk dapat membuat komunikasi I2C antara dua arduino lakukan penyambungan sebagai berikut.

SDA= A4
SCL= A5
GND= GND

RANGKAIAN
 

SKEMATIK
 

PROGRAM
Listing program pada arduino 1 sebagai master dan program pada arduino 2 sebagai slave adalah sebagai berikut.

MASTER

void setup()
{
  Wire.begin();
}

byte x = 0;

void loop()
{
  Wire.beginTransmission(8);
  Wire.write("x is ");
  Wire.write(x);
  Wire.endTransmission();

  x++;
  delay(500);
}



SLAVE

#include <Wire.h>

void setup()
{
  Wire.begin(8);
  Wire.onReceive(receiveEvent);
  Serial.begin(9600);
}

void loop()
{
  delay(100);
}

void receiveEvent(int howMany)
{
  while (1 < Wire.available())
  {
    char c = Wire.read();
    Serial.print(c);
  }
  int x = Wire.read();
  Serial.println(x);
}

Setelah kedua arduino telah terisi program, buka serial monitor pada arduino slave untuk menampilkan data yang dikirim dari arduino master. Data yang muncul pada serial monitor adalah data nilai x dari angka 1 dan bertambah satu angka untuk seterusnya.


Tidak ada komentar:

Posting Komentar