1. Kondisi [Kembali]
Pada percobaan 3 yaitu komunikasi I2C, menggunakan potensiometer sebagai input untuk mengatur kecepaatan kedipan pada LED.
2. Hardware [Kembali]
3. Rangkaian Simulasi [Kembali]
4. Penjelasan Prinsip Kerja [Kembali]
Pada program master, pertama deklarasikan library wire karena pada komunikasi I2C kita menggunakan library wire dan deklarasi variabel SLAVE_ADDR 9 untuk mempermudah memilih pada slave. Selanjutnya pemberian nilai awal pada analogpin int (analogPin = 0) dan variabel val (int val = 0). Pada fungsi void setup saya memasukan perintah memulai I2C dengan perintah Wire.begin(),selanjutnya adalah fungsi void loop yang berisikan perintah delay 50 ms selanjutnya rumus mencari nilai val dengan pemetaan nilai yang dibaca pada analogpin yang didapat dari potensiometer dan diamsukan ke rumus. Sehingga pemetaan tersebut dimasukan ke variabel val. Selanjutnya Wire.beginTransmission(SLAVE_ADDR) untuk memulai pengiriman data ke salve dan selanjutnya Wire.write(val) untuk penyetaan dari nilai val dan selanjutnya Wire.endTransmission() untuk menghentikan pengiriman data.
Lalu pada program slave program slave ini kita menggunakan library wire dan variabel SLAVE_ADDR 9 agar sama dengan master. Deklarasikan Pin 13 masuk ke variabel LED dan inisialisasi variabel rd dan br. Untuk void setup nya saya memberi perintah adalah pin LED saya berikan perintah sebagai output. Wire.begin(SLAVE_ADDR) digunakan untuk memulai dari komunikasi I2C. Wire.onReceive(receiveEvent) perintah ini digunakan untuk menerima data dengan variabel receiverEvent. Selanjutnya memberi kecepatan mengirim data 9600 dan mencetak kata "I2C Slave demo" pada layar, fungsi void untuk mendapatkan atau menerima data yang dikirimkan. Isi void tersebut adalah dengan memasukan nilai yang terbaca pada Wire.read() atau yang dikirimkan ke slave ke variabel rd dan kemudian nilai rd tersebut dicetak dengan perintah Serial.println(rd).listing selanjutnya adalah fungsi loop dijalankan yang berisikan delay 50 ms dan selanjutnya mencari nilai dari br yang didapatkan dari sintak br = map(rd, 1, 255, 100, 2000) yang merupakan pemetaan dari nilai rd yang diterima dari master tadi. Selanjutnya pin LED diberi logika high sehingga LED hidup dan selanjutnya diberi delay sebesar “br” ms sehingga lampu hidup selama delay yang dimasukan sebesar “br” ms setelahnya dijalankan perintah pi LED diberi logika low sehingga lampu mati dan diberi delay “br” ms. Maka lama lampu mati selama “br” ms kemudian barulah loop diulang.
Jadi dapat disimpulkan semakin besar potensio maka semakin besar delay dan kedipan LED semakin pelan. Sebaliknya jika potensio kecil maka delay dihasilkan juga kecil sehingga kedipan LED semakin cepat.
5. 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);
}
6. Analisa [Kembali]
1. Apa pengaruh baudrate pd komunikasi I2C? dan apakah pd komunikası I2C baudrate dapat dihilangkan?
Jawab:
Berdasarkan percobaan yang telah dilakukan boud rate tidak memiliki pengaruh terhadap 12c yang mana boudrate sendiri merupakan kecepatan transfer data dg satuan bit per second Sedangkan I2C sudah punya ketetapan kecepatan transfer data yaitu mencapai 4 mbps dg begitu boud rate tidak berpengaruh Dikarenakan boudrate tidak memiliki pengaruh pd komunikasi I2C maka untuk komunikasi I2C baudrate dpt dihilangkan.
2. Analisa pengaruh "SLAVE ADdR 9" Jika nilai 9 pd slave divariasikan?
Jawab:
Pd percobaan ADDR befungsi sbg alamat pd program. Jika nilai ADDR dirubah maka alamat yang akan dituju master tidak ada. SLAVE ADDR 9 ialah suatu tempat pengiriman yang mana alamat Pangiriman ini sendiri 0-127 untuk I2C. Ketika diubah pd slave ssedangkan pd master tetap 9. maka hasil output tidak sesuai dengan semestinya. Dapat disimpulkan bahwa alamat pd master dan slave harus sama.
7. Video Simulasi [Kembali]
8. Link Download [Kembali]
Download File HTML
Datasheet Potensiometer - Download
Datasheet LED - Download
Datasheet Arduino Uno - Download
Tidak ada komentar:
Posting Komentar