Laporan Akhir 2

 

Modul III COMMUNICATION



1. Hardware [Daftar]

        a. Arduino Uno
 

        b. LED

        c. Potensiometer



        d. Resistor





2. Gambar Rangkaian [Daftar]





    Rangkaian terdiri atas 2 arduino, potensiometer, dan  led. Percobaan ini menggunakan komunikasi I2C yang mana antara Arduino master dan slave dihubungkan dengan pin SDA di pin A4 dan SCL di pin A5. Sementara itu potensiometer dihubungkan pada pin A0 yang mana fungsinya sebagai input dari master. Selanjutnya led dihubungkan pada pin 13 di slave. Percobaan diatur untuk putaran potensio sebagai input yang akan mengatur delay dari led saat hidup dan mati, jadi Ketika potensio diatur pada keadaan persentase tinggi maka delay led akan cepat dan Ketika potensio pada persentase rendah, maka delay led akan lambat.

Pada program master dan slave akan dideklarasikan wire.h sebagai library dari komunikasi I2C. dan pada master dan slave juga dideklarasikan alamat dari master dan slave tersebut, dimana alamat yang dituju harus pada alamat yang sama. Misal alamat yang dituju 9, maka master dan slave harus sama, jika tidak maka komunikasi I2C tidak akan terjadi.

Selanjutnya pada program master akan diatur potensio sebagai input, dan nilai dari potensio yang awalnya 10bit akan diubah menjadi 8bit, serta menukar nilai maksimal di 10bit menjadi minimal di 8bit, dan nilai minimal di 10bit menjadi nilai maksimal di 8bit. Hal itu dilakukan dengan pengaturan pada rumusnya yaitu val = map(analogRead(analogPin), 0, 1023, 255, 1); yang nantinya hasil dari pembacaan ini akan di kirimkan pada slave.

Selanjutnya data yang dikirim dari master akan diolah oleh slave sebagai input nilai yang mengatur delay dari led saat menyala dan saat padam dengan menggunakan rumus br = map(rd, 1, 255, 100, 2000); maka dengan ini delay minimum dari led adalah 100ms dan maksimum nya di 2000ms.

 

Master

#include <Wire.h>
#define MASTER_ADDR 8
int analogPin = 0;
int val = 0;
void setup() {

Wire.begin();
}
void loop() {
delay(50);
val = map(analogRead(analogPin), 0, 1023, 255, 1);
Wire.beginTransmission(MASTER_ADDR);
Wire.write(val);
Wire.endTransmission();
}

Slave

#include <Wire.h>
#define SLAVE_ADDR 8
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 Simulasi [Daftar]


6. Analisa [Daftar]

1.      1.   Analisa pengaruh baudrate pada komunikasi I2C? dan apakah pada komunikasi i2c baudrate dapat dihilangkan!

Jawab:

Pada komunikas I2C, pada codingan awal akan mendeklarasikan wire.h yang merupakan library untuk komunikasi I2c ini. Pada library sudah disetting baudarate yang digunakan, jadi penggunaan baudarate pada listing program di master maupun slave tidak di perlukan lagi, dan penulisannya diu program dapat dihilangkan.


2.       2. Analisa pengaruh "SLAVE_ADDR 9" jika nilai 9  pada slave divariasikan!

Jawab:

SLAVE_ADDR 9 ini menyatakan alamat dari slave, yang mana alamat ini harus disamakan anntara master dan slave, Ketika master menggunakan alamat 9 maka pada slave juga harus memakai alamat 9, Ketika master memakai alamat 8 maka alamat slave juga harus 8. Ketika menggunakan alamat yang  berbeda maka komunikasi antara master dan slave tidak akan terjadi, sehingga rangkaian program tidak berjalan sesuai yang diinginkan


3.       3. Analisa pengaruh potensiometer terhadap output yang dihasilkan pada master dan slave!

Jawab:

Potensiometer ini digunakan sebagai nilai input pada rangkaian. Pada master, val akan dideklarasikan sebagai variabel untuk nilai data yang akan dikirimkan ke slave. Pada val terdapat rumus [val = map(analogRead(analogPin), 0, 1023, 255, 1); ] yang mana nilai penbacaan potensiometer lah yang diginakan sebagai inputannya. Ketika dikirimkan pada slave, terdapat variaber rd yang merupakan nilai potensio yang dikirimkan dari master. Nilai rd ini akan digunakan pada br untuk memvariasikan nilai delay dari led saat berlogika high dan berlogika low. Jadi dengan memutar potensio, led dapat berkedip lebih cepat atau lebih lambat.


4.       4. Analisa Alasan menggunakan program "val = map(analogRead(analogPin), 0, 1023, 255, 1)"!

Jawab:

Nilai val merupakan nilai yang diatur sesuai nilai pembacaan potensiometer. Pada val = map(analogRead(analogPin), 0, 1023, 255, 1); akan berfungsi mengubah bit pembacaan dari potensio yang 10bit menjadi 8 bit. Akan tetapi keadaan nilainya juga diubah, dimana pada nilai maksimal di 10bit akan diubah jadi nilai minimal di 8bit, dan nilai minimal 10bit dikonversi jadi nilai maksimal di 8bit. Ketika kita menginginkan nilai yang sama-sama saat maksimal di 10bit dan 8bit dan sebaliknya, maka saat menggunakan rumus urutannya diubah menjadi 0,1023,1,225.

7. Link Download [Daftar]

Materi HTML 


Tidak ada komentar:

Posting Komentar

Home