Laporan Akhir M3 2(Percobaan 3 kondisi 1)

Laporan Akhir M3 2(Percobaan 1 Kondisi 1)



1. Alat dan bahan[Kembali]
Alat dan bahan yang digunakan pada praktikum kali ini adalah:
a). Alat
1. Kabel jumper
Gambar 1. Kabel jumper

2. Breadboard
Gambar 2. Breadboard


b). Bahan
1. Arduino UNO
Gambar 3. Arduino UNO
2. LED
Gambar 4. LED
3. Resistor
Gambar 5. Resistor

4. Potensiometer
Gambar 6. Potensiometer


2. Rangkaian [Kembali]
Gambar rangkaian yang digunakan adalah sebagai berikut:


Gambar 7 & 8. Gambar rangkaian praktikum percobaan 3


3. Prinsip Kerja [Kembali]
a). Prinsip kerja rangkaian 
Tujuan dari dilakukan percobaan ini adalah menerapkan protokol komunikasi I2C dengan menggunakan arduino. Protokol I2C hanya menggunakan dua buah kabel yang menghubungkan antara device - devicenya, yakni dengan kabel SCL dan SDA. Pada arduino sendiri kabel ini terletak pada pin A4 dan A5.

Pada bagian master digunakan input dari variasi tegangan output potensiometer yang dihubungkan ke pin A0 untuk mengatur seberapa lama LED di bagian slave akan berkedip. Sementara untuk outputnya (pada slave) adalah sebuah LED yang terhubung ke pin digital 13.

b). Alur kodingan

CODINGAN MASTER

//MASTER

#include<Wire.h>
#define MASTER_ADDR 9

int analogPin = 0;
int val = 0;

void setup() {
  // put your setup code here, to run once:
  Wire.begin();

}

void loop() {
  // put your main code here, to run repeatedly:
  delay(50);
  val = map(analogRead(analogPin), 0, 1023, 255, 1);

  Wire.beginTransmission(MASTER_ADDR);
  Wire.write(val);
  Wire.endTransmission();
}

CODINGAN SLAVE

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

int LED = 13;
int rd; 
int br;

void setup() {
  // put your setup code here, to run once:
  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() {
  // put your main code here, to run repeatedly:
  delay(50);

  br = map(rd, 1, 255, 100, 2000);
  if (br == 100)
  {
    digitalWrite(LED, LOW);
  }

  else if(br == 2000)
  {
    digitalWrite(LED, HIGH);
  }

  else
  {
    digitalWrite(LED, HIGH);
    delay(br);
    digitalWrite(LED, LOW);
    delay(br);
  }
  
}

Penjelasan codingan master
Sebelum masuk ke void setup pertama dilakukan di program adalah mengimport library wire.h yakni sebuah library yang memungkinkan kita untuk menggunakan protokol komunikasi I2C, lalu mendekarasikan pin master ADDR dengan pin 9. Lalu dibawahnya mendeklarasikan dua buah variabel yakni analog pin dan val.

Lalu masuk ke bagian void setup, pada bagian ini tidak banyak kodingan, yang perlu dilakukan hanyalah menginisiasikan library wire agar bisa digunakan dengan menggunakan perintah Wire.begin().

Lalu masuk kedalam bagian program inti yakni bagian void loop. Untuk kodingan master juga tidak terlalu banyak. Bagian ini dimulai dengan memberikan delay sebesar 50 ms, lalu memapping (mengkslaskan) kembali nilai yang dibaca dari potensiometer yang awalnya memiliki skala dari 0 sampai 1023 (ADC 10 bit) diskalakan ke nilai 1 sampai 255. lalu dimulai transfer data melalui MASTER ADDR, dan menulis nilai dari hasil mapping tersebut, setelah menulis nilainya, kemudian transmisi data dihentikan dengan perintah Wire.endTransmission().

Penjelasan codingan slave
Sebelum masuk ke void setup pertama dilakukan di program adalah mengimport library wire.h yakni sebuah library yang memungkinkan kita untuk menggunakan protokol komunikasi I2C, lalu mendekarasikan pin SLAVE_ADDR dengan pin 9. Lalu variabel yang akan digunakan pada program serta pin-pinnya seperti pin 13 LED, variabel rd dan br

Kemudian masuk kedalam bagian void setup, bada bagian ini terdapat beberapa hal yang harus dilakukan, yang pertama adalah menginisiasikan pin LED dengan mode output, menginisasikan transmisi dengan menggunakan perintah wire begin, lalu perintah wire on revceive. Selain itu, juga diinisiasikan juga serial monitor dengan nilai baud rate 9600 dan dirpint text "I2C slave demo". 

Dikarenakan pada perintah wire on receive juga menggunakan fungsi, maka perlu dijelaskan kegunaan dari fungsi tersebut. Fungsi ini bersifat void sehingga tidak mengembalikan nilai apapun, kegunaan dari fungsi ini adalah membaca nilai hasil pengiriman serial kemudian memasukkannya kedalam variabel rd, lalu memprint hasil pembacaan tersebut

Pada bagian void loop, dilakukan delay sebesar 50 ms untuk setiap perulangannya, lalu variabel br diskalakan dengan variabel input rd dari yang awalnya memiliki skala 1- 255 diubah menjadi skala 100 - 2000. lalu sesuai kondisi (apabila potensiometer 100 % LED mati, jika 0% LED hidup, dan apabila diantarnya LED kedap-kedip dengan delay sesuai dengan hasil pembacaan potensiometer tersebut).

4. Video Praktikum [Kembali]

Video pada saat percobaan praktikum dapat dilihat dibawah ini:


5. Analsisis [Kembali]
Soal analisa yang didapat pada percobaan 3 ini adalah:
a). Apa pengaruh baud rate pada komunikasi I2C? Dan apakah pada komunikasi I2C baud rate dapat dihilangkan?

Jawab:
Perlu diketahui bahwa I2C merupakan komunikasi serial yang bersifat sinkronus. Yang berarti transmisi data antara master dan slave dikendalikan melalui sebuah clock inti (biasanya digunakan clock dari device master). Kecepatan transfer dari I2C sendiri sudah ditetapkan dalam spesifikasi protokol I2C. Maka dari itu besar dari baud rate tidak memiliki pengaruh pada komunikasi I2C. Pemilihan baud rate pada komunikasi I2C di arduino hanyalah untuk menginisiasikan kecepatan transfer pada serial monitor di arduino, bukan kccepatan transfer data I2C. Jadi, berdasarkan penjelasan tersebut maka dapat dikatakan bahwa baud rate pada komunikasi ini bisa dihilangkan

b). Analisa pengaruh "SLAVE_ADDR 9" jika nilai 9 pada slave dihilangkan!

Jawab:
Slave_ADDR9 pada program ini bagia manakah yang akan dijadikan slave_ADDR. Angka 9 hanya sebagai placeholder (tempat sementara) nilai saja. Dan nilai dapat diganti apabla pada definisi SLAVE_ADDR juga diganti

6. Link Download [Kembali]

Tidak ada komentar:

Posting Komentar

Mata kuliah Elektronika Kelas A  Semester Genap Th.2021   DISUSUN OLEH :   MUHAMMAD RIZIEQ RIZALDI   2010952031     DO...