- Potensiometer
Potensiometer adalah
sebuah jenis resistor yang mengatur sebuah tahanan atau hambatan secara linier
atau Komponen resistif tiga kawat yang bertindak sebagai pembagi tegangan yang
menghasilkan sinyal output tegangan variabel kontinu yang sebanding dengan
posisi fisik wiper di sepanjang trek.
- Resistor
- LED
LED dapat kita definisikan
sebagai suatu komponen elektronika yang terbuat dari bahan
semikonduktor dan dapat memancarkan cahaya apabila arus listrik
melewatinya.
Led
(Ligth-Emitting Diode) memiliki fungsi utama dalam dunia elektronika
sebagai indikator atau sinyal indikator atau lampu indikator.
LED terdiri dari sebuah chip semikonduktor yang di doping sehingga menciptakan junction P dan N. Yang dimaksud dengan proses doping dalam semikonduktor adalah proses untuk menambahkan ketidakmurnian (impurity) pada semikonduktor yang murni sehingga menghasilkan karakteristik kelistrikan yang diinginkan. Ketika LED dialiri tegangan maju atau bias forward yaitu dari Anoda (P) menuju ke Katoda (K), Kelebihan Elektron pada N-Type material akan berpindah ke wilayah yang kelebihan Hole (lubang) yaitu wilayah yang bermuatan positif (P-Type material). Saat Elektron berjumpa dengan Hole akan melepaskan photon dan memancarkan cahaya monokromatik (satu warna).
- Arduino Uno
Arduino Uno adalah board mikrokontroler berbasis ATmega328 (datasheet). Memiliki 14 pin input dari output digital dimana 6 pin input tersebut dapat digunakan sebagai output PWM dan 6 pin input analog, 16 MHz osilator kristal, koneksi USB, jack power, ICSP header, dan tombol reset. Untuk mendukung mikrokontroler agar dapat digunakan, cukup hanya menghubungkan Board Arduino Uno ke komputer dengan menggunakan kabel USB atau listrik dengan AC yang-ke adaptor-DC atau baterai untuk menjalankannya.
2. Rangkaian Simulasi [back]
4. Listing Program [back]
#include <Wire.h> //Deklarasi library Wire
#define SLAVE_ADDR 9 //Deklarasi pin 9 untuk alamat slave
int analogPin = 0; //Deklarasi nilai analogPin sama dengan 0
int val = 0; //Deklarasi nilai variabel val adalah 0
void setup() { //Merupakan fungsi yang dieksekusi sekali
Wire.begin(); //Inisiasi library Wire
}
void loop() { //Merupakan fungsi yang dieksekusi berulang atau looping
delay(50); //Penundaan eksekusi selama 50 ms
val = map(analogRead(analogPin), 0, 1023, 255, 1); //Mengubah atau mapping nilai dari pembacaan analog dari range 0-1023 menjadi 255-1 dan dimasukkan ke variabel val
Wire.beginTransmission(SLAVE_ADDR); //Memulai transmisi data ke alamat slave yang dituju
Wire.write(val); //Menulis data pada slave
Wire.endTransmission(); //Mengakhiri transmisi data ke slave
}
Untuk membedakan masing-masing slave maka setiap slave memiliki alamat yang unik dan berbeda satu sama lain. Master yang akan mengatur slave mana yang akan aktif, master akan memanggil alamat slave yang ingin diaktifkan. Untuk program pada master, diinisialisasi alamat masing-masing slave. Untuk program masing-masing slave diinisiasi address slave masing-masing slave agar dapat mengenali ketika master melakukan pemanggilan. HTML - Download
Master
//MASTER#include <Wire.h> //Deklarasi library Wire
#define SLAVE_ADDR 9 //Deklarasi pin 9 untuk alamat slave
int analogPin = 0; //Deklarasi nilai analogPin sama dengan 0
int val = 0; //Deklarasi nilai variabel val adalah 0
void setup() { //Merupakan fungsi yang dieksekusi sekali
Wire.begin(); //Inisiasi library Wire
}
void loop() { //Merupakan fungsi yang dieksekusi berulang atau looping
delay(50); //Penundaan eksekusi selama 50 ms
val = map(analogRead(analogPin), 0, 1023, 255, 1); //Mengubah atau mapping nilai dari pembacaan analog dari range 0-1023 menjadi 255-1 dan dimasukkan ke variabel val
Wire.beginTransmission(SLAVE_ADDR); //Memulai transmisi data ke alamat slave yang dituju
Wire.write(val); //Menulis data pada slave
Wire.endTransmission(); //Mengakhiri transmisi data ke slave
}
Slave:
//SLAVE
#include <Wire.h> //Deklarasi library Wire
#define SLAVE_ADDR 9 //Deklarasi pin 9 milik alamat slave
int LED = 13; //Deklarasi pin 13 terhubung ke LED
int rd; //Deklarasi variabel rd
int br; //Deklarasi variabel br
void setup() { //Fungsi ini dieksekusi sekali
pinMode(LED, OUTPUT); //Deklarasi LED sebagai Output
Wire.begin(SLAVE_ADDR); //Inisiasi library Wire dan Alamat Slave
Wire.onReceive(receiveEvent); //Memanggil fungsi ketika slave mendapat transmisi dari master
Serial.begin(9600); //Set baud rate 9600
Serial.println("I2C Slave demo"); //Mencetak data
}
void receiveEvent(){ //Deklarasi variabel receiveEvent
rd = Wire.read(); //Memasukkan data pembacaan ke variabel rd
Serial.println(rd); //Mencetak nilai rd
}
void loop() { //Fungsi yang dieksekusi berulang atau looping
delay(50); //Mendelay eksekusi 50 ms
br = map(rd, 1, 255, 100, 2000); // //Mengubah atau mapping nilai variabel rd dari range 1-255 menjadi 1000-2000 dan dimasukkan ke variabel br
digitalWrite(LED, HIGH); //LED diberi logika 1 sehingga LED menyala
delay(br); //Eksekusi program delay selama br
digitalWrite(LED, LOW); //LED diberi logika 0 sehingga LED mati
delay(br); //Eksekusi program delay selama br
}
#include <Wire.h> //Deklarasi library Wire
#define SLAVE_ADDR 9 //Deklarasi pin 9 milik alamat slave
int LED = 13; //Deklarasi pin 13 terhubung ke LED
int rd; //Deklarasi variabel rd
int br; //Deklarasi variabel br
void setup() { //Fungsi ini dieksekusi sekali
pinMode(LED, OUTPUT); //Deklarasi LED sebagai Output
Wire.begin(SLAVE_ADDR); //Inisiasi library Wire dan Alamat Slave
Wire.onReceive(receiveEvent); //Memanggil fungsi ketika slave mendapat transmisi dari master
Serial.begin(9600); //Set baud rate 9600
Serial.println("I2C Slave demo"); //Mencetak data
}
void receiveEvent(){ //Deklarasi variabel receiveEvent
rd = Wire.read(); //Memasukkan data pembacaan ke variabel rd
Serial.println(rd); //Mencetak nilai rd
}
void loop() { //Fungsi yang dieksekusi berulang atau looping
delay(50); //Mendelay eksekusi 50 ms
br = map(rd, 1, 255, 100, 2000); // //Mengubah atau mapping nilai variabel rd dari range 1-255 menjadi 1000-2000 dan dimasukkan ke variabel br
digitalWrite(LED, HIGH); //LED diberi logika 1 sehingga LED menyala
delay(br); //Eksekusi program delay selama br
digitalWrite(LED, LOW); //LED diberi logika 0 sehingga LED mati
delay(br); //Eksekusi program delay selama br
}
1. Apabila ada tambahan slave, bagaimana cara master membedakan satu slave dengan slave yang lainnya pada saat berkomunikasi? Apakah pada bagian rangkaian, program, atau keduanya?
Jawaban: Apabila ditambahkan slave, maka terjadi perubahan pada kedua aspek yaitu rangkaian dan program. Untuk rangkaian akan berbentuk seperti berikut
Untuk membedakan masing-masing slave maka setiap slave memiliki alamat yang unik dan berbeda satu sama lain. Master yang akan mengatur slave mana yang akan aktif, master akan memanggil alamat slave yang ingin diaktifkan. Untuk program pada master, diinisialisasi alamat masing-masing slave. Untuk program masing-masing slave diinisiasi address slave masing-masing slave agar dapat mengenali ketika master melakukan pemanggilan. HTML - Download
Simulasi Proteus - Download
Listing Program Master - Download
Listing Program Slave - Download
Video - Download
No comments:
Post a Comment