Laporan Akhir Modul 3 Percobaan 3

<



 1. Komponen [KEMBALI]

Alat

Arduino

Power Supply
Bahan
Push Button




BUZZER

Motor DC
 

Resistor
 

Potensiometer

 




  • MASTER
#include <Wire.h>
#define BUTTON A0
#define MASTER_ADDR 9

void setup(){
  Wire.begin();
  pinMode(BUTTON, INPUT);
}

void loop(){
  delay(50);
  int button_status = digitalRead(BUTTON);
  Wire.beginTransmission(MASTER_ADDR);
  Wire.write(button_status);
  Wire.endTransmission();
}

  • SLAVE
#include <Wire.h>
#define SLAVE_ADDR 9

int LED = 13;
int rd;

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(){
  if(rd == HIGH){
    digitalWrite(LED, LOW);
  }else{
    digitalWrite(LED, HIGH);
  }
}













 Pada percobaan ini dilakukan percobaan I2C untuk melakukan komunikasi antar dua Arduino UNO. Sebuah arduino digunakan sebagai master dan yang lainnya sebagai slave. Hubungan arduino MASTER-SLAVE terhubung pada pin SDA dan SCL masing-masing pada pin A4 dan A5. Pada pin A0 arduino master terhubung ke push button, push button terubung dari VCC melalui resistor dan ke ground, jika button tidak ditekan maka pin A0 akan berlogika HIGH karena arus masuk ke pin A0 sedangkan jika button tidak ditekan maka pin A0 akan berlogika LOW karena arus dilewatkan ke ground. Pada pin 13 slave terhubung ke resistor dan LED sebagai output.

MASTER
  Pertama dilakukan deklarasi library yang digunakan (Wire.h) serta pin-pin yang digunakan seperti A0 sebagai BUTTON dan 9 sebagai MASTER_ADDR. Selanjutnya pada fungsi void setup() dilakukan inisialisasi library Wire.h dengan fungsi begin() dan pengaturan pin BUTTON (A0) sebagai INPUT. Selanjutnya pada void loop() dilakukan delay selama 50ms dan dilakukan pembacaan nilai inputan dari pin BUTTON dengan digitalRead(BUTTON), kemudian hasil inputan disimpan dalam variabel button_status dengan tipe data integer. Setelah itu dilakukan pengiriman data dengan library Wire.h melalui MASTER_ADDR dan data dikirim dengan perintah Wire.write(button_status). Setelah dilakukan transmisi data maka transmisi data berakhir dengan Wire.endTransmission().

SLAVE
  Pertama dilakukan deklarasi library yang digunakan (Wire.h) serta pin-pin yang digunakan seperti 9 sebagai SLAVE_ADDR, pin 13 sebagai LED, dan deklarasi variabel rd dengan tipe data integer. Selanjutnya pada void setup() dilakukan pengaturan pin LED (13) sebagai INPUT dan inisialisasi library Wire.h dengan fungsi begin(SLAVE_ADDR). Setelah itu dilakukan penerimaan data dengan library Wire.h dengan fungsi onReceive(receiveEvent). Fungsi receive event() digunakan untuk menyimpan data yang diterima slave di dalam variabel rd. Selanjutnya pengaturan baud rate dari serial dengan fungsi Serial.begin(9600) dan dioutputkan tulisan pada Serial. Fungsi receive event() digunakan untuk menyimpan data yang diterima slave di dalam variabel rd dan kemudian nilainya dioutputkan pada Serial. Pada fungsi void loop() dilakukan percabangan, apabila nilai rd adalah 1 atau logika HIGH maka LED akan diberi logika LOW sehingga LED tidak menyala, sedangkan apabila nilai rd adalah 0 atau logika LOW maka LED akan diberi logika HIGH seghingga LED menyala.
  


1. Jelaskan bagaimana cara menghubungkan rangkaian I2C dengan slave lebih dari satu, dan jelaskan bagaimana komunikasi antara master dan slavenya.

Jawab:


 

I2C merupakan komunikasi serial yang singkronous dengan menggunakan jalur transfer data half duplex yang dirancang terdiri dari dua pin (SCL & SDA). Dari gambar diatas dapat dilihat 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.   




Rangkaian simulasi disini
Video simulasi disini
Flowchart disini
Listing Program master disini 
                           slave disini
HTML disini

Tidak ada komentar:

Posting Komentar