//SPI MASTER (ARDUINO)
//MASTER
#include <Wire.h>
#define MASTER_ADDR 9
int analogPin = 0; int val = 0;
void setup() { Wire.begin();
Serial.begin(1200);
}
void loop() { delay(50);
val = map(analogRead(analogPin), 0, 1023, 0, 100);
Wire.beginTransmission(MASTER_ADDR); Wire.write(val);
Wire.endTransmission();
}
//SLAVE
#include <Wire.h>
#define SLAVE_ADDR 9
int led2 = 11;
int led1 = 12;
int readI2c;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
Wire.begin(SLAVE_ADDR);
Wire.onReceive(receiveEvent);
Serial.begin(1200);
delay(500);
}
void receiveEvent()
{
readI2c = Wire.read();
}
void loop() {
Serial.print("Nilai readI2c: ");
Serial.println(readI2c);
if ((readI2c <= 20) and (readI2c >= 0))
{
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
delay(200);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
delay(200);
}
else {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
delay(1000);
}
}
Percobaan 2
1. Bandingkan jika alamat yang digunakan berbeda
Jika terjadi perbedaan antara address pada master dengan slave maka komunikasi antara kedua Arduino tersebut tidak dapat dilakukan. Hal ini karena data dikirimkan sesuai dengan address yang dituju pada I2c. Sehingga address master dan slave harus sesuai
2. Komunikasi apa yang terjadi
Komunikasi yang terjadi adalah komunikas simplex. Hal ini karena data dikirimkan dari master ke slave tanpa ada slave ke master. Namun pada komunikasi I2c dimungkinkan untuk terjadinya proses komunikai half duplex
3. Ganti baudrate pada slave dari 9600 menjadi 1200. lalu bandingkan apa yang terjadi
Jika baudrate diganti maka proses komunikasi I2c masih dapat berkomunikasi dengan baik. Hal ini dikarenakan pada komunikasi I2c tidak memerlukan baudrate tertentu untuk berkomunikasi serta sudah adanya clock pada komunikasi tersebut
Tidak ada komentar:
Posting Komentar