Laporan Akhir M3 Percobaan 3


PERCOBAAN 3
"KOMUNIKASI INTER INTEGRATED CIRCUIT I2C"
 


    Gambar 1. Arduino (SIMULANO)

                                  
BUTTON

LED






SLAVE


MASTER





 
//MASTER
#define button 2 //Deklarasi pin 2 untuk button
void setup()        //Semua kode dalam fungsi ini dieksekusi sekali
{
  pinMode(button, INPUT_PULLUP);
  Serial.begin(9600); //Set baud rate 9600
}
void loop()         //Semua kode dalam fungsi ini dieksekusi berulang
{
  int nilai = digitalRead(button);
  //Button ditekan
  if (nilai == 0)
  {
    Serial.print("1");
  }
  else
  {
    Serial.print("2");
  }
  delay(200);
}
//SLAVE
#define led 12 //Deklarasi pin 12 untuk LED
void setup()    //Semua kode dalam fungsi ini dieksekusi sekali
{
  pinMode(led, OUTPUT); //Deklarasi LED sebagai output
  Serial.begin(9600);           //Set baud rate 9600
}
void loop()                          //Semua program dalam fungsi ini dieksekusi berulang
{
  if (Serial.available() > 0)
  {
    int data = Serial.read();
    if (data == '1') //Jika data yang dikirimkan berlogika
    {
      digitalWrite(led, HIGH); //LED menyala
    }
    else
    {
      digitalWrite(led, LOW); //LED mati
    }
  }
}
 

 










ANALISA PERCOBAAN 3 I2C:

1.       Apakah kita dapat mengirim data sebanyak 9 bit? Jelaskan alasannya

Jawab: bisa, sebab data bit digital yang masuk ada frafe 1 dan frame 2,dan stop,dimana setiap frame nya ada 8 bit dan 1 stop bit jadi totalnya dapat mengirim 17 bit data dalam 1 siklus ditambah dengan start addres framen ack totalnya jadi 32 bit dalam sekali transfer

2.       Bagaimana cara master mengirimkan address ke slave? Berapa bit address yang dikirim? Berapa addres unik yang dapat tercipta oleh master?

Jawab:

Pada I2C, data ditransfer dalam bentuk message yang terdiri dari kondisi start, Address Frame, R/W bit, ACK/NACK bit, Data Frame 1, Data Frame 2,  dan kondisi Stop.

Kondisi start dimana saat pada SDA beralih dari logika high ke low sebelum SCL.Kondisi stop dimana saat pada SDA beralih dari logika low ke high sebelum SCL. Setelah itu R/ menentukan apakah master mengirim data ke slave atau meminta data dari slave. (logika 0 = mengirim data ke slave, logika 1 = meminta data dari slave) kemudian ACK/ memberi kabar jika data frame ataupun address frame telah diterima receiver.

PRINSIP KERJA:


komunikasi I2C atau inter integrated circuit adalah komunikasi yang memungkinkan terjadinya komunikasi antara controller.  jenis komunikasi ini memiliki pin sendiri pada arduino yaitu pin SDA dan SCL. setiap bit akan ditransfer pada kaki SDA dan akan di sinkronisasikan oleh pulsa clock pada SCL. setiap bit akan ditransfer pada pin SDA dalam bentuk 8 bit dan 1 bit ditransferkan pada clock atau SCL. untuk transfer data pada I2C harus dalam bentuk 8 bit sehingga semua data yang ditransfer dikonfersi kedalam bentuk 8 bit yaitu 256. rangkaian ini terdiri dari potensiometer. potensiometer kaki ujungnya dihubunngkan dengan vcc dan ground. lalu kaki tengah dihhubungkan dengan kaki input analog arduino master. nilai yang diterima oleh pin analog adalah berdasarkan perbandingan variabel resistor yang dipakai. lalu pin analog akan membaca nilai yang dihasilkan potensiometer yaitu dengan rentang 0 sampai dengan 1023. untuk proses transver data data maksimal adalah bernilai 255 ( data 8 bit). lalu dilakukan mapping untuk mengubah data dengan rentang  0 sampai 1023 menjadi rentang 1 sampai 255 (berdasarkan coding program arduino master). nilai hasil mapping akan dikirimkan melalui pin komunikasi I2C dan diterima oleh arduino slave. arduino slave akan membaca nilai yang dikirimkan kepadanya atau yang ia terima. nnilai tersebut akan berada dalam rentang 1 sampai 255. data tersebut akan dilakukan mapping kembali yaitu dari data 1 sampai 255 diubah menjadi rentang 100 sampai 2000. lalu hasil mapping dengan nilai 100 sampai 2000 akan dijadikan nilai delay untuk LED. saat nilai yang dibaca oleh potensiometer adalah 0 maka nilai hasil mapping master adalah 255. lalu nilai 255 ditransmisikan ke slave. slave menerima nilai 255 dan dilakukan mapping sehingga dihasilkan nilai 100. hasil 100 tersebut akan dijadikan  delay pada LED maka LED akn hidup selama 0.1 detik dan mati selama 0.1 detik pula begitu seterusnya.

saat keadaan sebaliknya yaitu saat potensio membaca nilai 1023 maka master akan melakukan mapping sehingga menghasilkan nilai 1. nilai 1 akan dikirimkan ke slave dan di mapping lagi oleh slave sehingga menghasilkan nilai 2000. nilai 2000 dijadikan delay hidup dan mati LED. artinya LED akan hidup selama 2 detik dan mati selama 2 detik.

pengaruh potensiometer kepada LED adalah besar nilai yang dihasilkan oleh potensiometer akan mempengaruhi durasi hidup dan matinya LED.  alasannya adalah saat nilai yang dibaca oleh potensiometer adalah 0 maka nilai hasil mapping master adalah 255. lalu nilai 255 ditransmisikan ke slave. slave menerima nilai 255 dan dilakukan mapping sehingga dihasilkan nilai 100. hasil 100 tersebut akan dijadikan  delay pada LED maka LED akn hidup selama 0.1 detik dan mati selama 0.1 detik pula begitu seterusnya. dan saat keadaan sebaliknya yaitu saat potensio membaca nilai 1023 maka master akan melakukan mapping sehingga menghasilkan nilai 1. nilai 1 akan dikirimkan ke slave dan di mapping lagi oleh slave sehingga menghasilkan nilai 2000. nilai 2000 dijadikan delay hidup dan mati LED. artinya LED akan hidup selama 2 detik dan mati selama 2 detik. oleh karena itu potensiometer akan mempengaruhi nilai delay dari keluaran output arduino sebagai slave atau kecepatan kedip dari LED.



Rangkaian simulasi download
Video penjelasan download
Program Arduino download MASTER SLAVE
File HTML download
 

Tidak ada komentar:

Posting Komentar

Entri yang Diunggulkan

BAHAN UNTUK RAKTIKUM MIKROPROSESOR DAN MIKROKONTROLER 2020 Oleh : YUDHA PRATAMA 1810953025 Dosen Pengampu : DARWISON , M.T Referensi...

Postingan Populer