//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);}
Percobaan2: I2C
Jika menggunakan 2 slave pada I2C bagaimana cara master menentukan komunikasi dengan slave yang mana? Dan jelaskan program nya!
Pada rangkaian I2C ini master berfungsi untuk menguasai bus sehingga ia menggendalikan/menghasilkan serial clock dan juga membangkitkan sinyal start dan sinyal stop. Jadi master yang menentukan kapan komunikasi dimulai dan kapan komunikasi diakhiri. Sementara slave menunggu dan membaca perintah dari master.
Untuk Rangkaian I2C dapat berkomunikasi dengan banyak slave dimana jika ingin menambahkan slave maka kita hubungkan kabel dari pin scl secara paralel ke slave, dan untuk koding arduinonya sama saja seperti slave sebelum nya, cuman pada koding ini kita membuat sejumlah kondisi untuk menentukan slave mana yang ingin kita hidupkan.
Tidak ada komentar:
Posting Komentar