1. Komponen [kembali]

A. 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();
}
B. 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);
}
6. Kondisi [Kembali]
Percobaan 3 Inter Integrated Circuit (I2C):
1. Apabila ada tambahan slave, bagaimana cara master membedakan satu slave
dengan slave lainnya pada i2C pada saat berkomunikasi? Apakah pada bagian
program, atau rangkaian, atau keduanya?
Jawab:
Pada rangkaian inter integrated circuit ini master dapat menentukan komunikasi dimulai atau dihentikan dengan menggunakan komunikasi start dan stop. Jika kita ingin menambahkan slave maka pin scl dihubungkan secara paralel dengan slave. Seperti yang dilihat pada gambar rangkaian dibawah :
Pada programnya kita menukar logika pada slave jika kita ingin menyalakan LED di
slave 1 maka slave 1 diberi logika HIGH dan LOW sedangkan slave 2 diberi logika
LOW dan LOW begitu pun sebaliknya.
Tidak ada komentar:
Posting Komentar