LA 3 M3 Prak Mikro (Komunikasi I2C)
1. Kondisi [Kembali]
2. Hardware [Kembali]
3. Rangkaian Simulasi [Kembali]
4. Listing Program [Kembali]
//Master
#include <Wire.h>
#define MASTER_ADDR 9
#define button A0
int analogPin = 0; int val = 0;
void setup() {
// put your setup code here, to run once:
Wire.begin();
}
void loop() {
// put your main code here, to run repeatedly:
delay(50);
val = map (analogRead(analogPin), 0, 1023, 255, 1);
Wire.beginTransmission(MASTER_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);
if(rd==HIGH){
digitalWrite(LED, HIGH);
}else{
digitalWrite(LED, LOW);
}
}
5. Video Simulasi [Kembali]
6. Analisa [Kembali]
#include <Wire.h>
#define MASTER_ADDR 9
#define button A0
int analogPin = 0; int val = 0;
void setup() {
// put your setup code here, to run once:
Wire.begin();
}
void loop() {
// put your main code here, to run repeatedly:
delay(50);
val = map (analogRead(analogPin), 0, 1023, 255, 1);
Wire.beginTransmission(MASTER_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);
if(rd==HIGH){
digitalWrite(LED, HIGH);
}else{
digitalWrite(LED, LOW);
}
}
1. Jelaskan bagaimana cara menghubungkan rangkaian I2C dengan slave lebih dari satu, dan bagaimana komunikasi antara master dan slavenya.
Jawab :
I2C berasal dari kata IIC, kepanjangannya Inter-Integrated Circuit. Komunikasi data I2C merupakan komunikasi data digital serial secara sinkron, yaitu membutuhkan jalur sinkronisasi pewaktu transmisi data serial. Karena bersifat komunikasi sikron maka pola komunikasi antar piranti hanya bisa dilakukan secara half duplex.
Cara menghubungkan I2C dengan n slave yaitu pin SCL pada master dihubungkan secara parallel masing-masing ke pin SCL slave. Sedangkan pin SDA master juga dihubungkan dengan parallel ke masing-masing slave. Pada koumunikasi antara master dan slave I2C master mengontrol jalur sinyal SCL (Shared Clock) dan SDA (Shared Data) untuk membaca atau menulis data dari perangkat. Untuk mengirimkan data sinyal clock di bangkitkan oleh SCL yang sekaligus memulai sinyal start dimana sinyal start terjadi perubahan logika HIGH menuju LOW lalu data dikirimkan melalui SDA sampai terjadi sinyal stop dimana perubahan logika LOW menuju HIGH.
Comments
Post a Comment