TP Modul 3
1. Tujuan
[Daftar]
Kondisi: Ganti potensiometer dengan push button, ketika push button ditekan maka jika led padam maka led akan menyala begitupula sebaliknya.
3. Dasar Teori
[Daftar]
1. Arduino UNO
3. LED
Arduino Uno adalah papan mikrokontroler berbasis ATmega328 yang memiliki 14 pin digital input/output (di mana 6 pin dapat digunakan sebagai output PWM), 6 input analog, clock speed 16 MHz, koneksi USB, jack listrik, header ICSP, dan tombol reset. Board ini menggunakan daya yang terhubung ke komputer dengan kabel USB atau daya eksternal denga adaptor AC-DC atau baterai.
2. Resistor
Microcontroller | ATmega328P |
Operating Voltage | 5V |
Input Voltage (recommended) | 7 – 12 V |
Input Voltage (limit) | 6 – 20 V |
Digital I/O Pins | 14 (of which 6 provide PWM output) |
PWM Digital I/O Pins | 6 |
Analog Input Pins | 6 |
DC Current per I/O Pin | 20mA |
DC Current for 3.3V Pin | 50mA |
Flash Memory | 32 KB of which 0.5 KB used by bootloader |
SRAM | 2KB |
EEPROM | 1KB |
Clock Speed | 16MHz |
Resistor merupakan komponen pasif yang memiliki nilai resistansi tertentu dan berfungsi untuk menghambat jumlah arus listrik yang mengalir dalam suatu rangkaian. Resistor dapat diklasifikasikan menjadi beberapa jenis, diantaranya resistor nilai tetap (fixed resistor), resistor variabel (variabel resistor), thermistor, dan LDR.
Cara membaca nilai resistor
Cara menghitung nilai resistansi resistor dengan gelang warna :
1. Masukan angka langsung dari kode warna gelang pertama.
2. Masukan angka langsung dari kode warna gelang kedua.
3. Masukan angka langsung dari kode warna gelang ketiga.
4. Masukkan jumlah nol dari kode warna gelang ke-4 atau pangkatkan angka tersebut dengan 10 (10^n).
5. Gelang terakhir merupakan nilai toleransi dari resistor.
Contoh pada resistor di atas nilai resistansi resistor adalah 134 Ohm.
Resistor Seri Resistor Paralel
Cara membaca nilai resistor
Cara menghitung nilai resistansi resistor dengan gelang warna :
1. Masukan angka langsung dari kode warna gelang pertama.
2. Masukan angka langsung dari kode warna gelang kedua.
3. Masukan angka langsung dari kode warna gelang ketiga.
4. Masukkan jumlah nol dari kode warna gelang ke-4 atau pangkatkan angka tersebut dengan 10 (10^n).
5. Gelang terakhir merupakan nilai toleransi dari resistor.
Contoh pada resistor di atas nilai resistansi resistor adalah 134 Ohm.
Resistor Seri Resistor Paralel
3. LED
LED merupakan keluarga dari Dioda yang terbuat dari Semikonduktor. Cara kerjanya pun hampir sama dengan Dioda yang memiliki dua kutub yaitu kutub Positif (P) dan Kutub Negatif (N). LED hanya akan memancarkan cahaya apabila dialiri tegangan maju (bias forward) dari Anoda menuju ke Katoda.
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).
Tegangan Maju LED
4. Push Button
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).
Tegangan Maju LED
Push button adalah pemutus dan penyambung aliran listrik. Namun dalam hal ini, ia tak bersifat mengunci. Jadi ia akan kembali ke posisi semua saat selesai ditekan. Saat push button ditekan, ia menjadi bernilai HIGH dan akan menghantarkan arus listrik. Sedangkan apabila dilepas, maka ia bernilai LOW dan memutus arus listrik. Namun cara kerja saklar push button kadang berbeda tergantung dari jenisnya. Apakah ia termasuk NO atau NC.
4. Percobaan
[Daftar]
Listing Program Slave
#include <Wire.h>
#define BUTTON A0
#define MASTER_ADDR 9
void setup(){
Wire.begin();
pinMode(BUTTON, INPUT);
}
void loop(){
delay(50);
int button_status = digitalRead(BUTTON);
Wire.beginTransmission(MASTER_ADDR);
Wire.write(button_status);
Wire.endTransmission();
}
Listing Program Slave
#include <Wire.h>
#define SLAVE_ADDR 9
int LED = 13;
int rd;
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(){
if(rd == HIGH){
digitalWrite(LED, LOW);
}else{
digitalWrite(LED, HIGH);
}
}
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 button, push button terubung dari VCC melalui resistor dan ke ground, jika button tidak ditekan maka pin A0 akan berlogika HIGH karena arus masuk ke pin A0 sedangkan jika button tidak ditekan maka pin A0 akan berlogika LOW karena arus dilewatkan ke ground. Pada pin 13 slave terhubung ke resistor dan LED sebagai output.
MASTER
Pertama dilakukan deklarasi library yang digunakan (Wire.h) serta pin-pin yang digunakan seperti A0 sebagai BUTTON dan 9 sebagai MASTER_ADDR. Selanjutnya pada fungsi void setup() dilakukan inisialisasi library Wire.h dengan fungsi begin() dan pengaturan pin BUTTON (A0) sebagai INPUT. Selanjutnya pada void loop() dilakukan delay selama 50ms dan dilakukan pembacaan nilai inputan dari pin BUTTON dengan digitalRead(BUTTON), kemudian hasil inputan disimpan dalam variabel button_status dengan tipe data integer. Setelah itu dilakukan pengiriman data dengan library Wire.h melalui MASTER_ADDR dan data dikirim dengan perintah Wire.write(button_status). Setelah dilakukan transmisi data maka transmisi data berakhir dengan Wire.endTransmission().
SLAVE
Pertama dilakukan deklarasi library yang digunakan (Wire.h) serta pin-pin yang digunakan seperti 9 sebagai SLAVE_ADDR, pin 13 sebagai LED, dan deklarasi variabel rd dengan tipe data integer. Selanjutnya pada void setup() dilakukan pengaturan pin LED (13) sebagai INPUT dan inisialisasi library Wire.h dengan fungsi begin(SLAVE_ADDR). Setelah itu dilakukan penerimaan data dengan library Wire.h dengan fungsi onReceive(receiveEvent). Fungsi receive event() digunakan untuk menyimpan data yang diterima slave di dalam variabel rd. Selanjutnya pengaturan baud rate dari serial dengan fungsi Serial.begin(9600) dan dioutputkan tulisan pada Serial. Fungsi receive event() digunakan untuk menyimpan data yang diterima slave di dalam variabel rd dan kemudian nilainya dioutputkan pada Serial. Pada fungsi void loop() dilakukan percabangan, apabila nilai rd adalah 1 atau logika HIGH maka LED akan diberi logika LOW sehingga LED tidak menyala, sedangkan apabila nilai rd adalah 0 atau logika LOW maka LED akan diberi logika HIGH seghingga LED menyala.
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 button, push button terubung dari VCC melalui resistor dan ke ground, jika button tidak ditekan maka pin A0 akan berlogika HIGH karena arus masuk ke pin A0 sedangkan jika button tidak ditekan maka pin A0 akan berlogika LOW karena arus dilewatkan ke ground. Pada pin 13 slave terhubung ke resistor dan LED sebagai output.
MASTER
Pertama dilakukan deklarasi library yang digunakan (Wire.h) serta pin-pin yang digunakan seperti A0 sebagai BUTTON dan 9 sebagai MASTER_ADDR. Selanjutnya pada fungsi void setup() dilakukan inisialisasi library Wire.h dengan fungsi begin() dan pengaturan pin BUTTON (A0) sebagai INPUT. Selanjutnya pada void loop() dilakukan delay selama 50ms dan dilakukan pembacaan nilai inputan dari pin BUTTON dengan digitalRead(BUTTON), kemudian hasil inputan disimpan dalam variabel button_status dengan tipe data integer. Setelah itu dilakukan pengiriman data dengan library Wire.h melalui MASTER_ADDR dan data dikirim dengan perintah Wire.write(button_status). Setelah dilakukan transmisi data maka transmisi data berakhir dengan Wire.endTransmission().
SLAVE
Pertama dilakukan deklarasi library yang digunakan (Wire.h) serta pin-pin yang digunakan seperti 9 sebagai SLAVE_ADDR, pin 13 sebagai LED, dan deklarasi variabel rd dengan tipe data integer. Selanjutnya pada void setup() dilakukan pengaturan pin LED (13) sebagai INPUT dan inisialisasi library Wire.h dengan fungsi begin(SLAVE_ADDR). Setelah itu dilakukan penerimaan data dengan library Wire.h dengan fungsi onReceive(receiveEvent). Fungsi receive event() digunakan untuk menyimpan data yang diterima slave di dalam variabel rd. Selanjutnya pengaturan baud rate dari serial dengan fungsi Serial.begin(9600) dan dioutputkan tulisan pada Serial. Fungsi receive event() digunakan untuk menyimpan data yang diterima slave di dalam variabel rd dan kemudian nilainya dioutputkan pada Serial. Pada fungsi void loop() dilakukan percabangan, apabila nilai rd adalah 1 atau logika HIGH maka LED akan diberi logika LOW sehingga LED tidak menyala, sedangkan apabila nilai rd adalah 0 atau logika LOW maka LED akan diberi logika HIGH seghingga LED menyala.
5. Video
[Daftar]
6. Link Download
[Daftar]