Laporan Akhir Percobaan 3 Modul 3



1. Komponen [kembali]

Button


LED


ARDUINO

Potensiometer



//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);
}

5. Video [kembali]



Percobaan 3

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

Jawab :

Jika mengirim data, Master hanya dapat mengirimkan sejumlah byte (masing-masing 8 bit). Saat memuliah proses transmitting dari Master, 7 bit pertama sebagai alamat Slave yang akan dituju (Address frame), 1 bit kemudian sebagai R/W bit untuk memberitahukan ke Slave-slave apakah Master akan menerima atau mengirimkan data. Sedangkan bit ke-9, bit tersebut akan dikeluarkan oleh Slave sebagai tanda bahwa data telah diterima oleh receiver (ACK/NACK). Kemudian, Master akan menulis data 8 bit (Data frame) dan bit-9 oleh Slave sebagai sinyal acknowledge / ACK (berlogika 0) yang dikeluarkan Slave kembali untuk dapat menerima data selanjutnya hingga SDA menerima sinyal Not Acknowladge / NACK (berlogika 1) untuk mengakhirim transfer data. 

2. Apa pengaruh potensiometer terhadap output (LED)?

Jawab :

Penagruhnya yaitu ada pada intensitas cahaya LED, apakah semakin cepat atau semakin lama redupnya (hidup-mati). Berdasarkan program Arduino yang telah dibuat, semakin kecil tahanan terukur pada potensiometer, maka semakin kecil delay yang dihasilkan dan LED pun akan semakin cepat redupnya (hidup-mati). Sedangkan jika semakin besar tahanan terukur pada potensiometer, maka semakin besar delay yang dihasilkan dan LED pun semakin lama redupnya. 

3. Jelaskan prinsip kerja I2C pada rangkaian!

Jawab :

Pada rangkaian terdapat 2 buah Arduino (Master dan Slave), button, LED, dan ground. Untuk menjalankan rangkaian maka dibuat program Arduino untuk Master dan Slave. Untuk Master, dideklarasikan library Wire, variable SLAVE_ADDR 9, int analogPin = 0, dan int val = 0. Lalu, fungsi void setup() terdapat Wire.begin() dan dieksekusi sekali. Kemudian, void loop() yang dieksekusi berulang. Di dalamnya terdapat delay 50 ms. Lalu, val = map(analogRead(analogPin), 0, 1023, 255, 1); dimana analoPin akan dibaca, 0 dan 1023 dari ADC dengan 10 bit, dan 255, 1 dari PWM dengan 8 bit, sehingga diperlukan sintaks map. Lalu, transmisi dimulai dengan data dari val sebelumnya dan transmisi selesai.

Untuk Slave, dideklarasikan library Wire, variable SLAVE_ADDR 9, int LED = 13, int rd, dan int br. Kemudian fungsi void setup() dimana LED sebagai output, Wire.begin(SLAVE_ADDR), dan proses penerimaan data. Lalu, set baud rate 9600 dan menampilkan "I2C Slave demo". Pada fungsi receiveEvent() pada proses penerimaan data, terdapat delay 50 ms dan br = map (rd, 1, 255, 100, 2000). Lalu LED HIGH (hidup) , delay dari br, LED LOW (mati), dan delay dari br kembali. 

Setelah program Arduino untuk Master dan Slave dibuat, lalu dipasang pada Arduino pada rangkaian. Ketika rangkaian dijalankan, ketika nilai tahanan pada potensiometer diatur (rd) maka akan mempengaruhi nilai br dan delay yang menggunakan nilai br. Apabila nilai tahanannya kecil, maka nilai br juga kecil sehingga delay nya pun semakin kecil. Dengan begitu, LED akan redup (hidup-mati) lebih cepat. Sedangkan jika nilai tahanannya besar, maka delay nya pun besar sehingga LED akan redup lebih lama.

Download Rangkaian Simulasi  [ Download ]
Download Video Praktikum [ Download ]
Download HTML [ Download ]


Tidak ada komentar:

Posting Komentar