Percobaan 3
#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();
}
#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);
}
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 mengakhirim transfer data.
2. Apa pengaruh potensiometer terhadap output (LED)?
JAWAB:
Pada percobaan yang telah dilakukan kita menggunakan sebuah potensiometer, yang mana potensiometer tersebut berpengaruh terhadapap kecapatan clock pada LED, yaitu pada saat potensiometernya diperbesar maka, kecepatan delay led cepat, sehingga led akan berkedip maka kecepatan delay led lambat, sehingga led juga akan berkedip dengan sangat lambat pula.
3. Jelaskan prinsip kerja I2C pada rangkaian
JAWAB:
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”.
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.
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.
Tidak ada komentar:
Posting Komentar