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]
Inter Integrated Circuit (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. Dihubungkan dengan sistem I2C Bus dapat dioperasikan
sebagai Master dan Slave. Master adalah yang menguasai bus sehingga ia mengendalikan/menghasilkan
serial clock dan juga membangkitkan sinyal START dan sinyal STOP. Jadi Master
yang menentukan kapan komunikasi dimulai dan komunikasi diakhiri. Sementara
Slave menunggu/membaca perintah dari master apakah harus menerima/menulis data
atau mengirim data ke Master. Slave tidak boleh membangkitkan pulsa clock
(serial clock). Atau dapat disimpulkan Master dapat mengirim atau menerima data
dari Slave dan sesama slave tidak boleh berkomunikasi.
Komunikasi
antara Master dengan Slave dimulai dengan membangkitkan pulsa START oleh
Master. Pulsa START dibaca oleh Slave pada bus SDA dalam keadaan LOW pada saat
pulsa clock dalam keadaan HIGH. Setelah pulsa START dikirimkan, maka pada clock
berikutnya Master mengirimkan 8 bit alamat, yang dikirimkan secara serial
melalui bus SDA, ke Slave dengan format B6, B5, B4, B3, B2, B1, B0, dan R/W.
Bit alamat tersebut mengandung informasi R/W pada LSB. Jika LSB pada byte
alamat “1” maka master ingin membaca data dari Slave tetapi jika LSB byte alamat
“0” maka master akan menulis pada slave. Karena hanya 7 bit yang dipergunakan
dalam byte alamat maka banyaknya device yang dapat dijadikan slave hanya 127.
Alamat 0 dipergunakan untuk General Call. Bila alamat dan perintah, Read atau
Write, yang dikirimkan oleh master dapat diterima oleh slave maka slave akan
membangkitkan pulsa LOW (ACK), pada bus SDA, jika perintah tersebut dapat
dijalankan dan pulsa HIGH (NACK) jika perintah tersebut gagal.
Setelah Master menerima pulsa LOW (ACK),
Data dikirimkan/dibaca dari alamat Slave tersebut. Bila data telah berhasil
dikirim/dibaca maka slave memberikan pulsa LOW (ACK) pada bus SDA tetapi jika
terjadi kegagalan maka slave akan memberikan pulsa HIGH (NACK). Pulsa Stop,
pulsa yang naik dari LOW ke HIGH pada saat pulsa clock dalam keadaan HIGH, akan
dikrimkan oleh Master untuk menghentikan komunikasi.
7. Link Download[Kembali]
Video [Download]
HTML [Download]
Tidak ada komentar:
Posting Komentar