LA 2 I2C - M3




1. Alat dan Bahan[Back]
- Jumper
Kabel jumper adalah suatu istilah kabel yang ber-diameter kecil yang di dalam dunia elektronika digunakan untuk menghubungkan dua titik atau lebih dan dapat juga untuk menghubungkan 2 komponen elektronika. Kabel jumper jenis ini digunakan untuk koneksi male to male pada kedua ujung kabelnya.


- Arduino Uno

Microcontroller ATmega328P

Operating Voltage 5 V

Input Voltage (recommended) 7 – 12 V

Input Voltage (limit) 6 – 20 V

Digital I/O Pins 14 (of which 6 provide PWM output)

PWM Digital I/O Pins 6

Analog Input Pins 6

DC Current per I/O Pin 20 mA

DC Current for 3.3V Pin 50 mA

Flash Memory 32 KB of which 0.5 KB used by bootloader

SRAM 2 KB

EEPROM 1 KB

Clock Speed 16 MHz


- LED

LED merupakan kependekan dari Light Emitting Diode, yakni salah satu dari banyak jenis perangkat semikonduktor yang mengeluarkan cahaya ketika arus listrik melewatinya.

- Resistor
Resistor adalah komponen elektronika yang bersifat menghambat arus listrik. Resistor termasuk dalam komponen pasif karena komponen ini tidak membutuhkan arus listrik untuk bekerja. Resistor terbuat dari material atau bahan karbon dan keramik yang berbentuk tabung.


- Breadboard
breadboard adalah board yang digunakan untuk membuat rangkaian elektronik tanpa harus merepotkan pengguna untuk menyolder. Biasanya papan breadboard ini digunakan untuk membuat rangkaian elektronik sementara untuk tujuan uji coba atau prototype.


Potensiometer
2. Rangkaian Simulasi[Back]

3. Prinsip Kerja Rangkaian[Back]
//MASTER
#include <Wire.h>
#define MASTER_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(MASTER_ADDR);
Wire.write(val);
Wire.endTransmission();
}


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


PENJELASAN:
Komunikasi I2C (Inter-Integrated Circuit) yang berkomunikasi dengan pin A4 - SDA (Sychronous data) & pin A5 - SCL (Sychronous clock)Secara berurutan data dikirim dari master ke slave kemudian (setelah komunikasi master ke slave selesai) dari slave ke master.

Pin 13 arduino digunakan sebagai output LED di slave.
Pin A0 arduino digunakan sebagai input Potensiometer di Master.

Pada Code master:
Pada void loop(), 
terdapat delay sebesar 50ms.
terdapat pembacaan analog dari potensiometer dengan angka 0 -1023 dan akan dikonversikan ke nilai PWM berangka 0-255 dimana 0 adc = 255 pwm ; 1023 adc = 1 pwm.


Pada Code slave:
Pada void loop(), 
terdapat delay sebesar 50ms.
terdapat pengkonversian nilai pwm 1-255 menjadi angka 100 - 2000. Lalu, hasil konversi dimasukkan ke delay dimana:
LED diberikan logika HIGH atau hidup kemudian delay sebesar putaran potensiometer lalu LED diberikan logika LOW atau mati dan kemudian delay sebesar putaran potensiometer.

3. Video Rangkaian[Back]


5. Analisa[Back]

1. Pada komunikasi I2C, bisakah menggunakan lebih dari 1 master? 
2. jelaskan pengaruh potensiometer terhadap output rangkaian ?


Jawab:
  1. Bisa. Dalam sebuah jalur I2C bus selain memungkinkan adanya penggunaan banyak perangkat slave, juga bisa menggunakan beberapa perangkat master dalam sebuah jalur I2C bus yang sama. Jika menggunakan multiple master dalam sebuah jalur I2C bus, maka penggunaan jalur bergantian antar tiap-tiap master, tapi umumnya digunakan satu master dengan multiple perangkat slave.
  2. Pengaruhnya, yaitu saat potensiometer diputar berlawanan arah jarum jam kedipan LED semakin kencang atau delay semakin kecil. Begitu pula sebaliknya saat potensiometer diputar searah jarum jam, kedipan LED semakin lambat atau delay semakin besar. Hal itu dikarenakan, pada code menggunakan input Potensiometer yang nilainya dikonversi ke PWM lalu dikonversi 1 menjadi 100 & 255 menjadi 2000 dan dimasukkan ke delay LED. Jadi, LED hidup -> delay (sesuai putaran potensiometer) -> LED mati -> Delay (sesuai putaran potensiometer)

6. Link Download[Back]

Datasheet Potensiometer - Download
Electricity LightningElectricity Lightning