LAPORAN AKHIR PERCOBAAN 2

Komunikasi I2C




1. Hardware [kembali]

 

2. Rangkaian [kembali]

 






3. Flowchart [kembali]



Master
Slave
 



4. Listing Program [kembali]



//MASTER


#include

#define SLAVE_ADDR 9


int analogPin = 0;

int val = 0;


void setup() {

  Wire.begin();

}


void loop() {

  delay(50);

  val = map(analogRead(analogPin), 0, 1023, 255, 1);


  Wire.beginTransmission(SLAVE_ADDR);

  Wire.write(val);

  Wire.endTransmission();


}



//SLAVE


#include

#define SLAVE_ADDR 9


int LED = 13;

int rd;

int br;


void setup() {

  pinMode(LED, OUTPUT);

  Wire.begin(SLAVE_ADDR);

  Wire.onReceive(receiveEvent);


  Serial.begin(9600);

  Serial.println("I2C Slave demo");


}


void receiveEvent() {

  rd = Wire.read();

  Serial.println(rd);

}

void loop() {

  delay(50);


  br = map(rd, 1, 255, 100, 2000);


  digitalWrite(LED, HIGH);

  delay(br);

  digitalWrite(LED, LOW);

  delay(br);

}


5. Analisa [kembali]


Jika pada rangkaian komunikasi I2C menggunakan 2 slave, bagaimana cara master untuk menentukan berkomunikasi dengan slavaenya, apakah berkominikasi dengan slave 1 atau 2, jelaskan secara rangkaian dan program!

Jawab :

I2C merupakan jenis komunikasi yang memiliki kecepatan sangat tinggi dan 2 arah (timbal balik) dengan menggunakan 2 pin yaitu pin SDA dan SCL. Pada I2C data masuk dari master lalu ditransfer ke slave, begitu juga sebaliknya berlaku hubungan timbal balik.

Pada rangkaian I2C menngunakan kondisi start dan stop untuk master berkomunikasi dengan slave. Jika ingin menambahkan device lain atau slave lain maka pin SDA dan SCL dihubungkan secara paralel ke jalur yang menghubungkan master dan slave 1. Cara master memilih slave yaitu master akan mentransferkan data ke slave denga logika HIGH yaitu pada rangkaian terdapat pada slave 1 sehingga LED paad slave 1 menyala sedangkan slave 2 diberi logika LOW.

Seperti pada gambar rangkaian berikut :

Gambar 1. Rangkaian sebelum dijalankan

Gambar 2. Rangkaian setelah dijalankan

Untuk menjalankan rangkaian tersebut menggunakan program arduino, dimana terdapat perbedaan pada program slave 1 dan slave 2 di bagian void loop yaitu slave 1 diberi logika HIGH dan slave 2 diberi logika LOW.

·         Slave 1

void loop() {

  delay(50);

  br = map(rd, 1, 255, 100, 2000);

  digitalWrite(LED, HIGH);

  delay(br);

}

·         Slave 2

void loop() {

  delay(50);

  br = map(rd, 1, 255, 100, 2000);

  digitalWrite(LED, LOW);

  delay(br);

}

6. Video Praktikum [kembali]





7. Link Download [kembali]

Download Rangkaian Simulasi  [ DOWNLOAD ]
Download Video Praktikum [ DOWNLOAD ]
Download Program Arduino Master [ DOWNLOAD ]
Download Program Arduino Slave[ DOWNLOAD ]
Download HTML [ DOWNLOAD ]




Tidak ada komentar:

Posting Komentar