I2C
//MASTER
#include
#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
#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);
}
1. Jelaskan prinsip kerja dari I2C dan keunggulannya!
Pada I2C terdapat master dan slave, data ditransfer menuju slave 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 pada 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)
Kelebihan Utama dari komunikasi I2C antara lain :
- Hanya memerlukan 2 saluran/bus
- Tidak diperlukan setting baudrate
- Komunikasi bisa dilakukan dengan lebih dari 2 perangkat elektronika dalam 2 bus dan untuk membedakan setiap slave digunakan pengalamatan yang berbeda-beda.
- Terdapat hubungan master dan slave dalam setiap komunikasi. Proses pertukaran data sepenuhnya diatur oleh master.
2. Peran potensiometer pada percobaan?
Pada percobaan ini, potensiometer berguna sebagai input dari master untuk memperbesar atau memperkecil delay hidup dari LED.
Ketika potensiometer di perbesar maka kecepatan clock pada LED akan semakin cepat, dan apabila potensio diperkecil maka kecepatan Clock pada LED akan semakin lambat.
Tidak ada komentar:
Posting Komentar