1. Komponen[KEMBALI]
2. Rangkaian Simulasi[>KEMBALI]
3. Flowchart[>KEMBALI]
Prinsip Kerja :
Pada Program Master dideklarasikan library wire.h lalu didefinisikan button pada A0 dan MASTER_ADDR9, lalu pada bagian void setup dideklarasikan fungsi wire dan pin mode untuk buttom yang berup input, pada void loop diberi delay sebesar 50ms lalu dibuat fungsi untuk membaca nilai dari BUTTON, lalu nilai ditransmisikan melalui master ADDR yang mana berisi status dari buttom.
pada program slave dideklarasikan library wire.h lalu didefinisikan button pada A0 dan MASTER_ADDR9, lalu untuk pin 13 digunakan untuk output led. lalu dideklarasikan nilai variabel rd, dan br. lalu untuk void setup dimana pin mode led sebagi output dan dituliskan fungsi receive. dimana pada voide receive dimana nilai dari wire dan dideklarasikan nilai rd. dimana untuk void loop, apabila nilai rd high maka nilai led low, namun jika berniali else maka LED bernilai high.
untuk rangkaian dimana input dari A0 berupa nilai dari high dari vcc, dan nilai low dari ground. lalu nilai dari master ditransimisikan ke slave dan dari slave akan memproses perintah dari master, yang mana akan dikeluarkan dalam bentuk output pada led, yang mana apabila push button ditekan maka led menyala namun jika dilepaskan maka led akan mati.
4. Listing Program [>KEMBALI]
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;
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(){
if(rd == HIGH){
digitalWrite(LED, LOW);
delay(100);
}else{
digitalWrite(LED, HIGH);
delay(100);
}
}
5. Video Simulasi[>KEMBALI]
6. Analisa[>KEMBALI]
Percobaan 3
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.
7. Link Download[>KEMBALI]
Download file Rangkaian simulasi
Download file Listing Program
Download file Datasheet Arduino
Download file Video simulasi
Download file HTML
Tidak ada komentar:
Posting Komentar