PERCOBAAN 3
Komunikasi I2C
1. Alat dan Bahan [Kembali]
A. Alat
3. Prinsip Kerja Rangkaian
[Kembali]
Pada percobaan ini, kounikasi yang digunakan adalah I2C, dimana UART membutuhkan 2 pin pada masing masing arduino saling terhubung, yaitu pin A4 dan A5, dimana pin A4 berfungsi sebagai SDA, dan A5 berfungsi sebagai SCL, pada percobaan ini selain 2 buah arduino, digunakan juga komponen lainnya yaitu Potensiometer dan LED, dimana potensiometer berfungsi sebagai input master, dan LED sebagai output dari slave, dengan program :
//MASTER
#include <Wire.h>
#define MASTER_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(MASTER_ADDR);
Wire.write(val);
Wire.endTransmission();
}
//SLAVE
#include <Wire.h>
#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);
}
Ketika program sudah diinputkan ke arduino, maka rangkaian akan berjalan sesuai dengan
yang diprogramkan.
4. Video Percobaan
[Kembali]
5. Analisa
[Kembali]
5.1. Analaisa pengaruh baudrate pada komunikasi I2C ! dan apakah pada komunikasi I2C baudrate dapat dihilangkan?
Jawab :
pada I2C baudrate tidak memiliki pengaruh. karena baudrate tidak diperlukan pada komunikasi tipe I2C
5.2. Analisa Pengaruh SLAVE_ADDR 9 jika nilai 9 pada slave diavriasikan !
Jawab :
SLAVE_ADDR 9 berfungsi sebagai alamat dari slave yang mana alamat pada slave harus sama dengan alamat master, jika di variasikan dan alamat slave berbeda dengan alamat master, maka data tidak dapat sampai kepada slave
5.3. Analisa pengaruh potensiometer terhadap output yang dihasilkan pada master dan slave!
Jawab :
pada program slave delay kedipan lampu di program dengan
delay(br); dimana br sendiri hasil operasi
br = map(rd, 1, 255, 100, 2000); dan rd adalah wire read dimana data yang dibaca dikirim dari program master
Wire.write(val); val sendiri adalah
val = map(analogRead(analogPin), 0, 1023, 255, 1); jadi besarnya nilai potensiometer nanti berpengaurh ke apda delay dari kedipan LED semakin besar potensiometer semakin lama delay yang dihasilkan
5.4. analisa alasan mengggunakan program val = map(analogRead(analogPin), 0, 1023, 255, 1) !
Jawab :
untuk memetakan ulang angka dari analog read (analog pin) ke rentang 1025 dan ke 255.6. Link Download
[Kembali]