Mengatur kecepatan kedip LED dengan potensiometer (komunikasi I2C)
1. Arduino UNO
2. Breadboard
3. Kabel jumper
4. Kabel USB
5. LED
6. Resistor
7. Potensiometer
Listing Program
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
#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(115200);
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);
}
Pada rangkaian percobaan 3 ini akan mengatur kedip dari LED menggunakan potensiometer. Komponen yang digunakan yaitu 2 buah arduino masing-masing berfungsi sebagai master dan slave dimana keduanya menggunakan komunikasi I2C, potensiometer, resistor dan LED sebagai output.
Potensiometer terhubung ke arduino master dan LED sebagai output terhubung ke arduino slave. I2C adalah standar komunikasi serial dua arah menggunakan dua saluran yang didisain khusus untuk mengirim maupun menerima data. Sistem I2C terdiri dari saluran SCL (Serial Clock) dan SDA (Serial Data) yang membawa informasi data antara I2C dengan pengontrolnya.
Arduino master akan mengirim data ke arduino slave untuk menjalankan kondisi pada LED. Saat potensiometer diputar ke kanan atau searah jarum jam, maka LED akan berkedip dengan cepat dengan pembacaan pada serial monitor angkanya semakin kecil. Ketika potensiometer diputar ke kiri atau berlawanan arah jarum jam, maka LED akan berkedip dengan lambat dengan pembacaan pada serial monitor angkanya semakin besar.
1. Apa pengaruh variasi baudrate pada komunikasi I2C? Jika baudrate pada master dan slave bervariasi, apakah LED tetap akan menyala? Mengapa demikian?
Pengaruh variasi baudrate pada komunikasi I2C adalah kecepatan transfer data. Jika nilai baudrate besar, maka transfer data semakin cepat. Jika ada variasi baudrate pada master dan slave, LED tetap bisa menyala tetapi tidak berkedip (tidak sesuai program/kondisi). Hal tersebut terjadi karena komunikasi I2C jenis komunikasinya adalah half-duplex, yaitu komunikasi 2 arah secara bergantian, tidak secara bersamaan.
2. Bagaimana output yang dihasilkan jika kita memutar potensiometer searah jarum jam maupun berlawanan arah jarum jam? Bagaimana pembacaan pada serial monitor jika potensiometer diputar?
Jika potensiometer diputar searah jarum jam, maka LED akan berkedip dengan cepat dengan pembacaan pada serial monitor angkanya semakin kecil dan maksimal pada angka 1. Jika potensiometer diputar berlawanan arah jarum jam, maka LED akan berkedip dengan lambat dengan pembacaan pada serial monitor angkanya semakin besar dan maksimal pada angka 255.
File HTML download
File Program Arduino Master download
File Program Arduino Slavedownload
File Datasheet Arduino download
File Datasheet LED download
File Datasheet Resistor download
File Datasheet Potensiometer download
File Library Arduino download
File Video Simulasi download
Tidak ada komentar:
Posting Komentar