Laporan Akhir Percobaan 3 Modul 3



1. Komponen [back]
a. Arduino


b. LED


c. Potensiometer


d. Resistor


Percobaan 3 merupakan rangkaian komunikasi I2C untuk mengatur intensitas cahaya pada LED menggunakan potensiometer. Pada rangkaian, potensiometer dihubungkan ke arduino MASTER dan LED dihubungkan ke arduino SLAVE. Pada rangkaian I2C, data yang dikirim berupa data analog atau sinusoidal, maka dihubungkan antara pin analog arduino MASTER dengan pin analog arduino SLAVE. Potensiometer dihubungkan ke pin analog A0 arduino MASTER dan akan diterima data analog (besar resistansi). Perubahan nilai resistansi akan mengakibatkan adanya perubahan intensitas cahaya LED.
Pada listing program arduino MASTER, dideklarasikan library wire.h, variabel SLAVE_ADDR 9, tipe data integer untuk analog pin A0 = 0, dan value = 0. Pada void setup, wire.begin digunakan untuk memulai pengiriman data menggunakan kabel antara 2 arduino. Pada void loop, delay sebesar 50 ms. Value = analo.Read digunakan untuk membaca nilai pada analog pinnya dan membandingkan ke ADC 16 bit dan PWM 8 bit pada arduino. Wire.beginTransmission memulai transmisi, wire.write mengirim data yang didapatkan dari variabel val (pembacaan dari potensiometer), dan wire.endTransmission berarti berakhirnya transmisi dari arduino MASTER ke arduino SLAVE.
Pada listing program SLAVE, dideklarasikan library wire.h, variabel SLAVE_ADDR 9, variabel LED (pin 13), variabel rd dan br dengan tipe data integer. Pada void setup, pin 13 disetup sebagai keluaran LED, wire.oneReceive menerima data dari master, serial.begin melihat serial monitor dan komunikasi serialnya, dibuat demo yang akan terlihat di monitor "I2C Slave demo", kemudian dibuat sebuah fungsi void pada receiveEvent untuk membaca data yang dikirim dari arduino MASTER (wire.read) dan disimpan pada variabel rd. Pada void loop, data yang tersimpan pada br akan dibandingkan ke dalam ADC dan PWM. Ketika nilai resistansi potensiometer diubah-ubah, jika nilai resistansinya besar, maka nilai br juga besar, dan LED akan lama hidup-lama mati. Sebaliknya, jika nilai resistansinya kecil, maka nilai br juga kecil, dan LED akan cepat-hidup-cepat mati.
A. Arduino MASTER


B. Arduino SLAVE

A. Arduino MASTER
//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();
 
}

B. Arduino SLAVE
//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);
}

A. Kondisi
Komunikasi I2C
B. Analisa

1.   Apa fungsi library Wire.h?

Jawab :

Library wire.h berfubgsi untuk menjalankan atau menangani protocol serial sinkron secara I2C yang menggunakan kabel dalam hubungan komunikasinya.

 

2.   Bagaimana pengaruh resistansi potensiometer terhadap output led?

Jawab :

Semakin besar nilai resistansi potensiometer, maka semakin lama selang waktu hidup-mati LED. Sebaliknya, semakin kecil nilai resistansi potensiometer, maka semakin cepat selang waktu hidup-mati LED.

 

3.   Bagaimana jika slave dan master lebih dari 1 atau Komunikasi banyak arduino?

Jawab :

Komunikasi akan tetap bisa berjalan. Hal ini disebabkan karena komunikasi I2C terjadi dari 2 arah atau lebih.


8. Link Download [back]
Download video simulasi [di sini]
Download rangkaian [di sini]
Download HTML [di sini]
Download library Arduino [di sini]
Download listing program arduino MASTER [di sini]
Download listing program arduino SLAVE [di sini]

Tidak ada komentar:

Posting Komentar