1. Kondisi [Kembali]
Pada percobaan 3 yaitu komunikasi I2C , menggunakan potensiometer sebagai input untuk mengatur kecepatan kedipan pada led.
2. Hardware [Kembali]
3. Rangkaian Simulasi [Kembali]
4. Prinsip Kerja [Kembali]
Pada percobaan ke 3 yaitu menggunakan komunikasi I2C. Pada percobaan ini kita akan memakai 2 buah arduino sebagai master dan slave, potensiometer, dan LED. Pada rangkaian pin A0 pada Master terhubung pada output potensiometer yang dijadikan sebagai input. Selanjutnya led dihubungkan dengan pin 13 pada arduino bagian slave. Beralih pada program, pada bagian master pertama deklarasikan untuk potensiometer pada A0 dan menentukan addres master dengan nama MASTER_ADDR 9. Selanjutnya, pada bagian voidloop masukkan int button_status yaitu digitalRead (POTENSIOMETER) selanjutnya programm pada bagian Slave pertama deklarasikan Slave_ADDR 9 lalu masukkan LED dengan input pada pin 13, dan int rd. Lalu pada bagian void setup, pinMode yaitu LED, sebagai output. dengan wire.begin Slave_ADDR dan wire.onReceive (receiveEvent) dengan serial begin 9600 dan seraial.printIn I2C Slave demo. Selanjutnya pada bagian void loop masukkan jika rd==HIGH maka LEDD akan mati, dan jika selain itu maka LED akan hidup. Apabila persen pada potensiometer semakin besar maka kedipan lampu pada led akan semakin cepat atau delay nya semakin kecil, begitu juga sebaliknya, ketika persen pada potensiometer semakin kecil maka delaynya akan semakin lama. .
5. Listing Program[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();
}
//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);
}
6. Analisa [Kembali]
1. Apa pengaruh baudrate pd komunikasi I2C? dan apakah pd komunikası I2C baudrate dapat dihilangkan?
Jawab:
Berdasarkan percobaan,baud rate tidak berpengaruh pada I2C karena I2C sudah mempunyai ketetapan kecepatan transfer data yaitu 4 mbps. Untuk baudrate pada I2C bisa dihilangkan
2. Analisa pengaruh "SLAVE ADdR 9" Jika nilai 9 pd slave divariasikan?
Jawab:
Slave_ADDR pada ADDR itu berfungsi sebagai alamat pada program. jika ADDR dirubah maka pada alamat yang dituju master juga tidak ada pada Slave_ADDR9 ini alamat pengirimnya 0-127 untuk I2C.ketika diubah pada slave jika tidak diubah pada master maka output yang dihasilkan tidak sesuai.disimpulkan bahwa pada master dan slave harus sama jika tidak program tidak terbaca
Tidak ada komentar:
Posting Komentar