2. Rangkaian Simulasi[Kembali]
3. Flowchart[Kembali]
//MASTER
#include
<Wire.h> #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 <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);
}
6. Analisa[Kembali]
Pada percobaan 3 ini yaitu menjelaskan cara kerja komunikasi I2C Inter Integrated Circuit atau sering
disebut I2C adalah standar
komunikasi serial dua arah menggunakan dua saluran yang didisain khusus untuk
mengirim maupun menerima data. Sistem I2C terdiri dari saluran SCL (Serial Clock) dan SDA (Serial Data) yang
membawa informasi data antara I2C dengan pengontrolnya. Piranti yang
dihubungkan dengan sistem I2C Bus dapat dioperasikan sebagai Master dan Slave. Master adalah piranti yang memulai transfer data pada I2C Bus dengan membentuk
sinyal Start, mengakhiri transfer data
dengan membentuk sinyal Stop, dan
membangkitkan sinyal clock. Slave adalah piranti yang dialamati master.
Sinyal Start merupakan
sinyal untuk memulai semua perintah, didefinisikan sebagai perubahan tegangan
SDA dari “1” menjadi “0” pada saat SCL “1”. Sinyal Stop merupakan sinyal untuk mengakhiri semua
perintah, didefinisikan sebagai perubahan tegangan SDA dari “0” menjadi “1”
pada saat SCL “1”. Kondisi sinyal Start dan
sinyal Stop seperti tampak pada Gambar 1.
Gambar 1. Kondisi sinyal start dan stop
Sinyal
dasar yang lain dalam I2C Bus adalah
sinyal acknowledge yang disimbolkan dengan ACK Setelah
transfer data oleh master berhasil
diterima slave, slave akan menjawabnya dengan mengirim
sinyal acknowledge, yaitu dengan membuat SDA menjadi “0”
selama siklus clock ke 9. Ini menunjukkan
bahwa Slave telah menerima 8 bit data dari Master. Kondisi sinyal acknowledge seperti
tampak pada Gambar 2.
Gambar 2. Sinyal ACK dan NACK
Dalam melakukan transfer data pada I2C Bus, kita harus
mengikuti tata cara yang telah ditetapkan yaitu:
·
Transfer data hanya dapat dilakukan ketikan
Bus tidak dalam keadaan sibuk.
·
Selama
proses transfer data, keadaan data pada SDA harus stabil selama SCL dalam
keadan tinggi. Keadaan perubahan “1” atau “0” pada SDA hanya dapat dilakukan
selama SCL dalam keadaan rendah. Jika terjadi perubahan keadaan SDA pada saat
SCL dalam keadaan tinggi, maka perubahan itu dianggap sebagai sinyal Start atau sinyal Stop.
Gambar 3. Trasfer Bit pada I2C bus
Video Percobaan
HTML
Tidak ada komentar:
Posting Komentar