3. Flowchart
Master
Slave
4. Listing Program
//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); } |
5. Video Simulasi
1. Apakah kita dapat
mengirim data sebanyak 9 bit? Jelaskan alasannya
Jawab :
Jika mengirim data, Master
hanya dapat mengirimkan sejumlah byte (masing-masing 8 bit). Saat memuliah
proses transmitting dari Master, 7 bit pertama sebagai alamat Slave yang akan
dituju (Address frame), 1 bit kemudian sebagai R/W bit untuk memberitahukan ke
Slave-slave apakah Master akan menerima atau mengirimkan data. Sedangkan bit
ke-9, bit tersebut akan dikeluarkan oleh Slave sebagai tanda bahwa data telah
diterima oleh receiver (ACK/NACK). Kemudian, Master akan menulis data 8 bit
(Data frame) dan bit-9 oleh Slave sebagai sinyal acknowledge / ACK (berlogika
0) yang dikeluarkan Slave kembali untuk dapat menerima data selanjutnya hingga
SDA menerima sinyal Not Acknowladge / NACK (berlogika 1) untuk menghentikan
transfer data.
2. Apa pengaruh
potensiometer terhadap output (LED)
Jawab :
Potensiometer berpengaruh
terhadap kecepatan clock pada LED, pada saat potensiometernya diperbesar maka
kecepatan delay LED cepat, sehingga LED akan berkedip dengan cepat. Jika nilai
potensiometernya diperkecil, maka resistansi akan besar sehingga kecepatan
delay LED lambat dan LED akan berkedip dengan sangat lambat juga.
3. Jelaskan prinsip kerja
I2C pada rangkaian
Jawab :
Inter Integrated Circuit atau
sering disebut I2C adalah 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”.Sinyal dasar yang lain dalam I2C Bus adalah sinyal acknowledge
yang disimbolkan dengan ACK, yang berfungsi sebagai pemberi kabar. 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.
Tidak ada komentar:
Posting Komentar