laporan akhir 3 modul 3
1. Hardware
Arduino Uno
Potensio
LED
[kembali]
2. Rangkaian Simulasi
- Master
//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
//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);
}
Pada komunikasi I2C menggunakan 2 kabel yaitu Serial clock (SCL) dan Serial data (SDA). Master terhubung dengan kaki output dari potensiometer melalui pin analog A0. Sedangkan slave terhubung dengan resistor dan LED melalui pin 13 . Listing program mengatur fungsi potensiometer pada rangkaian ini sebagai pengatur kecepatan hidup-matinya LED.
7. Analisa
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
memulai 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 mengakhirim transfer data.
2.
Bagaimana
cara master mengirimkan address ke slave? Berapa bit address yang dikirim?
Berapa addres unik yang dapat tercipta oleh master?
Jawab:
Pada
I2C, data ditransfer dalam bentuk message yang terdiri dari kondisi Start,
Address Frame, R/W bit, ACK/NACK bit, Data Frame 1, Data Frame 2, dan kondisi
Stop.
§
Kondisi
start dimana saat SDA beralih dari logika high ke low sebelum SCL.
§
Kondisi
stop dimana saat pada SDA beralih dari logika low ke high sebelum SCL.
§
R/W
bit berfungsi untuk menentukan apakah master mengirim data ke slave atau
meminta data dari slave. (logika 0= mengirim data ke slave, logika 1= meminta
data dari slave)
§
ACK/NACK
bit berfungsi sebagai pemberi kabar jika data frame ataupun address frame telah
diterima receiver.
[kembali]
8. Link download
Rangkaian klik di sini
Video simulasi klik di sini
Flowchart klik di sini
listing program klik di sini (master) klik di sini (slave)
HTML klik di sini
[kembali]
Tidak ada komentar:
Posting Komentar