1. Komponen [kembali]
2. Rangkaian Simulasi [kembali]
4. Listing Program [kembali]
//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. Percobaan 3 :
· Soal 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 ?
§ Cara membdekan slave 1 dengan slave 2 adalah dengan
memberikan address yang berbeda atau nama yang berbeda pada kedua slave. Cara memberikan
addres yaitu membuat nama pada syntax wire.beginnya. Fungsinya untuk membedakan
kemana arah komunikasi tersebut berjalan.