2. Rangkaian Simulasi [kembali]
//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();
#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);
PERCOBAAN 3 [I2C]:
1.Apakah kita dapat
mengirim data sebanyak 9 bit? Jelaskan alasannya
Jawab:
Tidak bisa karena
data yang masuk berupa frame data 1 dan frame data 2 dan ada data stop,jadi
satu frame terdiri 8 bit data karena ada
dua frame maka ada 16 bit data lalu ditambahkan dengan satu bit stop ,jadi satu
siklus terdapat 17 bit data ditambah kondisi
start bit,address frame,R/W bit ,ACK/NACK bit jadi data totalnya adalah 32 bit.
2.Apa pengaruh
potensiometer terhadap output (LED)
Jawab:
Berdasarkan
praktikum yang telah dilaksanakan potensiometer berpengaruh pada intensitas
menyala-redup pada output lednya,jika tahanan potensiometer diperbesar maka intensitas
menyala-redupnya lambat ini dikarenakan tahanan potensiometernya
besar,sebaliknya,jika tahanan potensiometer diperkecil maka intensitas
menyala-redupnya semakin cepat ini dikarenakan tahanan potensiometer kecil
sehingga arus besar mengalir .Namun pada proteus tidak terlalu nampak perubahan
intensitasnya,pada saat diaplikasikan pada alat maka akan terlihat perbedaannya
jika tahanan pada potensiometer diubah-ubah.
3. Jelaskan prinsip kerja
I2C pada rangkaian
Jawab:
Pada
rangkaian terdapat dua simulino uno yaitu master dan slave ,ada potensiometer
1k ,led blue dan resistor 220.pada potensiometer 1k terdapat 3 kaki ,kaki
pertama dihubungkan ke pin 5V master ,pin kedua dihubungkan ke pin A0 master
dan kaki ketiga dihubungkan ke ground.lalu kaki ground master dihubungkan
kekaki ground slave .pin A4 master dihubungkan ke pin A4 slave dan pin A5 master
dihubungkan ke A5 slave dan pin 13 slave dihubungkan ke resistoe 220 lalu ke
led blue dan ke ground.Pada master pertama dibuat library include
<Wire.h> dan dibuat #define SLAVE_ADDR 9 lalu dibuat int analogPin = 0
lalu dibuat int val = 0 ,void setup() ,lalu dibuat Wire.begin().setelah itu
dibuat void loop dimana fungsi ini dapat dieksekusi secara berulang.lalu dibuat
delay(50), val = map(analogRead(analogPin), 0, 1023, 255, 1), Wire.beginTransmission(SLAVE_ADDR),Wire.begin
Transmission(SLAVE_ADDR),Wire.write(val) dan dibuat Wire.end Transmission .
Pada
slave dibuat library #include <Wire.h> dan #define SLAVE_ADDR 9 lalu
dideklarasikan int LED = 13 ,int rd ,int br.lalu dibuat void set up dimana
semua kode didalamnya dieksekusi sekali saja. Selanjutnya dibuat pinMode(LED,
OUTPUT) yaitu led sebagai output ,lalu dibuat Wire.begin(SLAVE_ADDR) lalu dibuat
Wire.onReceive(receiveEvent) , lalu di set Serial.begin(9600); Serial.println ("I2C
Slave demo") . selanjutnya dibuat void receiveEvent(), rd = Wire.read() dan Serial.println(rd) .lalu dibuat void loop dimana fungsi ini dapat
dieksekusi secara berulang ,lalu dibuat delay(50) , br = map(rd, 1, 255, 100, 2000), digitalWrite(LED, HIGH) menyatakan led menyala
, delay(br)sebagai delaynya ,selanjutnya digital Write(LED, LOW) menyatakan led
mati terdapat delay(br).
Pada
rangkaian data akan ditransferkan 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.pada kondisi start SDA beralih dari logika high ke low sebelum
SCL.sedangkan pada kondisi stop saat SDA beralih dari logika low ke high
sebelum SCL.saat tahanan pada potensiometer diperbesar maka intensitas led
meyala-redup lambat hal ini dikarenakan karena tahanan besar,namun saat
potensiometer tahanannya diperkecil maka intensitas nyala redupnya semakin cepat
hal ini dikarenakan tahanan kecil.R/W berfungsi untuk menentukan apakah master
mengirim data ke master atau meminta data dari slave sedangkan ACK/NACK bit
berfungsi sebagai pemberi kabar jika data frame ataupun address frame telah
diterima receiver.
Download video simulasi disini
Download rangkaian simulasi disini
Download HTML disini
Download program arduino slave disini
Download program arduino master disini
Tidak ada komentar:
Posting Komentar