a. Untuk memahami komunikasi I2C
b. Mengaplikasikan komunikasi I2C ke Arduino
Kondisi: Mengubah output LED menjadi output Motor DC
a. Alat
- 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
- 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.
b. Bahan
-Software Arduino
IDE itu merupakan kependekan dari Integrated Developtment Enviroenment, atau secara bahasa mudahnya merupakan lingkungan terintegrasi yang digunakan untuk melakukan pengembangan. Disebut sebagai lingkungan karena melalui software inilah Arduino dilakukan pemrograman untuk melakukan fungsi-fungsi yang dibenamkan melalui sintaks pemrograman. Arduino menggunakan bahasa pemrograman sendiri yang menyerupai bahasa C. Bahasa pemrograman Arduino (Sketch) sudah dilakukan perubahan untuk memudahkan pemula dalam melakukan pemrograman dari bahasa aslinya. Sebelum dijual ke pasaran, IC mikrokontroler Arduino telah ditanamkan suatu program bernama Bootlader yang berfungsi sebagai penengah antara compiler Arduino dengan mikrokontroler.
Prinsip Kerja:
Pada percobaan ini dilakukan percobaan I2C untuk melakukan komunikasi antar dua Arduino UNO. Sebuah arduino digunakan sebagai master dan yang lainnya sebagai slave. Hubungan arduino MASTER-SLAVE terhubung pada pin SDA dan SCL masing-masing pada pin A4 dan A5. Pada pin A0 arduino master terhubung ke push potensiometer, potensiometer terubung ke VCC dan ke ground. Kecepatan Motor DC akan berputar mengikuti nilai potensiometer
//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
#include <Wire.h> //Deklarasi library Wire
#define SLAVE_ADDR 9 //Deklarasi pin 9 milik alamat slave
int MOTOR = 13; //Deklarasi pin 13 terhubung ke Motor
int rd; //Deklarasi variabel rd
int br; //Deklarasi variabel br
void setup() { //Fungsi ini dieksekusi sekali
pinMode(MOTOR, OUTPUT); //Deklarasi Motor 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(MOTOR, HIGH); //Motor diberi logika 1 sehingga motor menyala
delay(br); //Eksekusi program delay selama br
}
1. Jelaskan pengaruh potensiometer terhadap output rangkaian
Jawab:
Pengaruh potensiometer yaitu mengatur kecepatan pada output yang mana pada Motor DC. Jika nilai potensiometer besar mak tinggi kecepatan/laju dari Motor DC juga cepat. Begitu juga sebaliknya, yang berarti pengaruh potensiometer dengan kecepatan motor berbanding lurus
2. Jelaskan bagian mana dari program dan rangkaian yang diganti jika outputnya diubah menjadi Motor DC
Jawab:
Untuk rangkaian yang diubah ialah output rangkaian tersebut, dimana LED diganti dengan Motor DC pada rangkaian percobaan
Untuk program yang diganti ialah semua variabel LED diganti dengan variabel MOTOR pada program arduino slave. Diantaranya yaitu: deklarasi pin 13 terhubung ke motor, deklarasi motor sebagai output dan pemberian logika pada motor
3. Bagaimana mengotrol kecepatan Motor DC dan arah Motor DC pada percobaan
Jawab:
untuk mengatur kecepatan Motor DC ialah dengan mengatur nilai potensiometer. Dimana hubungan antara keduanya berbanding lurus
Untuk mengubah arah motor ialah menukar posisi input dan output arus pada motor. Jika menggunakan L239D caranya ialah menukar logika antara kedua input.
Tidak ada komentar:
Posting Komentar