Modul III Percobaan 3

3. Flowchart [Kembali]

4. Listing Program [Kembali]
//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);
}

5. Video [Kembali]

6. Prinsip Kerja Rangkaian [Kembali]

Pada rangkaian percobaan ini terdiri dari beberapa komponen diantaranya dua buah arduino yang memiliki fungsi yang berbeda, satu sebagai master dan satu lagi sebagai slave, lalu ada potensiometer untuk mengatur delay, dan juga ada LED. Rangkaian ini mengatur intensitas cahaya pada LED dengan potensiometer dengan menggunakan komunikasi I2C. Pada percobaan kali ini hampir sama dengan percobaan UART akan tetapi pada pin yang kita gunakan berbeda yaitu menggunakan pin A4 dan A5 yang saling terhubung antara Master dan Slave.

7. Analisa [Kembali]

1. Apakah kita dapat mengirim data sebanyak 9 bit? Jelaskan alasannya

Iya, karena pada komunikasi I2C jumlah bit data yang dikirim dan di terima tidak dibatasi.

2. Bagaimana cara master mengirimkan address ke slave? Berapa bit address yang dikirim? Berapa addres unit yang dapat tercipta oleh master?

Komunikasi I2C (Inter-Integrated Circuit) merupakan koneksi dibuat untuk menyediakan komunikasi antara perangkat-perangkat terintegrasi, seperti sensor, RTC, dan juga EEPROM. Komunikasi I2C bersifat synchronous namun berbeda dengan SPI karena I2C menggunakan protocol dan hanya menggunakan dua kabel untuk komunikasi, yaitu Sychronous clock (SCL) dan Sychronous data (SDA). Secara berurutan data dikirim dari master ke slave kemudian (setelah komunikasi master ke slave selesai) dari slave ke master. Sinyal dasar I2C meliputi sinyal STARTSTOP dan ACK sebagai berikut: SCK merupakan sinyal clock untuk ‘mendorong’ data di SDA, dalam keadaan tidak ada transfer data SDA dan SCK harus dalam keadaan ‘1’. Data di SDA boleh berubah hanya pada saat SCK=’0’, isi SDA diambil peralatan I2C pada saat SCL berubah dari ‘1’ menjadi ‘0’. Jika terjadi perubahan SDA pada saat SCL=‘1’, perubahan itu diartikan sebagai sinyal START atau STOP.

- Sinyal START menandakan master akan mulai mengirim data, berupa perubahan tegangan SDA dari ‘1’ menjadi ‘0’ pada saat SCK=’1’.

- Sinyal STOP menandakan master akan mengakhiri komunikasi data, berupa perubahan tegangan SDA dari ‘0’ menjadi ‘1’ pada saat SCK=’1’.

- Sinyal ACK, merupakan sinyal balasan dari slave setelah menerima data 1 byte. Pada kondisi ini, slave “menarik” sda menjadi low selama satu sinyal clock. Sinyal ACK, dimana pengiriman sinyal ini menandakan bahwa slave telah menerima 1 byte data.

bit address yang dikirim tergantung berapa yang akan diprogramkan pada arduino yang batasannya lebih besar terhadap komunikasi lainnya, karenakan I2C adalah gabungan dari UART dan SPI.

Address unit yang dapat tercipta oleh master tidak dibatasi jumlahnya dalam pengiriman dan penerimaan data.

8. Link Download [Kembali]
Download Rangkaian Disini
Download Video Disini
Download Listing Arduino Master Disini
Download Listing Arduino Slave Disini
Download HTML Disini





No comments:

Post a Comment