Anda di halaman 1dari 6

Hidupkan LED dengan Button, Aplikasi Arduino!

Melanjutkan tutorial saya sebelumnya, tentang simulator Arduino menggunakan Proteus dan VBB. Kali ini saya berikan ulasan tentang aplikasi Arduino yang sangat sederhana sekali, menghidupkan LED menggunakan tombol atau pushbutton. Perhatikan rangkaian Arduino yang saya tunjukkan pada Gambar 1 menggunakan simulator VBB 4.3.8. Indikator LED kita sambungkan ke pin 13 (secara default, sebagaimana saya jelaskan tentang Arduino, pin 13 sudah tersambung dengan sebuah LED pada perangkat keras sesungguhnya) dan tombol kita pasang ke pin 2 (hanya contoh, Anda bisa memasang tombol dimana saja, program silahkan Anda sesuaikan).

Gambar 1 Selanjutnya perhatikan properti (properties), ada di sebelah kanan dari VBB) dari LED dan tombol (pushbutton) yang ditunjukkan pada Gambar 2 dan Gambar 3. Pada indikator LED terdapat 3 properti, Anda bisa menentukan warna LED dengan memilih merah (red), hijau (green), biru (blue) dan kuning (yellow) pada properti Color. Anda juga bisa menentukan sifat LED yang terpasang, apakah akan menyala jika diberi logika HIGH (properti Cathode=Ground) atau LOW (properti Cathode=Pin).

Gambar 2 Untuk tombol atau pushbutton terdapat lebih banyak properti, yaitu 5 (perhatikan Gambar 3). Tipe kontak ditentukan oleh Contact Type, sebagai berikut:

1. On=VDD, OFF=Gnd - active HIGH 2. ON=Gnd, OFF=VDD - active LOW 3. Make VDD - sambung ke VDD 4. Make GND - sambung ke GND 5. Break VDD - putus dari VDD 6. Break GND - Putus dari GND

Gambar 3 Properti lainnya adalah bentuk dari tombol, ditentukan pada properti Button, dengan pilihan sebagai berikut:
1. Circle - lingkaran 2. Square - kotak 3. Left Arrow - panah ke kiri 4. Right Arrow - panah ke kanan 5. Down Arrow - panah ke bawah 6. Up Arrow - panah ke atas

Juga Anda bisa menentukan warna tombol saat menyala dan mati, masing-masing ada di properti ColorON dan ColorOFF. Silahkan Anda kreasikan sendiri. Sisa penjelasan dalam menyiapkan rangkaian silahkan mengikuti tutorial VBB untuk simulator Arduino. Listing program Arduino sebagai berikut
/* Button

Turns on and off a light emitting diode(LED) connected to digital pin 13, when pressing a pushbutton attached to pin 2. The circuit: * LED attached from pin 13 to ground * pushbutton attached to pin 2 from +5V * 10K resistor attached to pin 2 from ground * Note: on most Arduinos there is already an LED on the board attached to pin 13. http://www.arduino.cc/en/Tutorial/Button

*/ // constants won't change. They're used here to // set pin numbers: const int buttonPin = 2; // the number of the pushbutton pin const int ledPin = 13; // the number of the LED pin // variables will change: int buttonState = 0; // variable for reading the pushbutton status void setup() { // initialize the LED pin as an output: pinMode(ledPin, OUTPUT); // initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT); } void loop(){ // read the state of the pushbutton value: buttonState = digitalRead(buttonPin); // check if the pushbutton is pressed. // if it is, the buttonState is HIGH: if (buttonState == HIGH) { // turn LED on: digitalWrite(ledPin, HIGH); } else { // turn LED off: digitalWrite(ledPin, LOW); } }

Penjelasan:

Di awal kita mendeklarasikan konstanta buttonPin dan ledPin dengan angka (pin) masing-masing 2 dan 13; Untuk menyimpan kondisi apakah tombol terakhir ON atau OFF (satu tombol untuk melakukan togel ON/OFF pada LED) digunakan variabel buttonState. Perhatikan pengetikan variabel harus mengikuti besar kecilnya huruf, karena basisnya adalah pemrograman dalam bahasa C; Pada fungsi setup(), buttonPin didefinisikan sebagai masukan (pinMode(buttonPin, INPUT)) dan ledPin sebagai luaran (pinMode(ledPin, OUTPUT)); Pada program utama loop(), pertama dibaca dulu tombolnya (buttonState = digitalRead(buttonPin)) kemudian diperiksa apakah dalam kondisi HIGH atau ditekan (if (buttonState == HIGH)). Jika memang ditekan, maka LED dihidupkan (digitalWrite(ledPin, HIGH)), sebaliknya LED akan dimatikan (digitalWrite(ledPin, LOW)); Demikian seterusnya

December 5, 2011 Chandra MDE Leave a comment Go to comments

1 Votes

Jika Rangkaian LED Aktif-Low dan LED Aktif-High merupakan rangkaian sederhana dalam eksperimen mikrokontroler yang mewakili rangkaian output, maka rangkaian tombol aktif-low di samping adalah rangkaian sederhana yang mewakili rangkaian input dengan dua-kondisi yakni kondisi logika high dan kondisi logika low. Rangkaian terdiri dari sebuah resistor yang diseri dengan sebuah tombol normally-opened (NO). Resistor berfungsi sebagai beban yang mencegah terjadinya hubung-singkat ketika tombol ditekan. Nilai resistor yang umum digunakan dalam level tegangan TTL adalah 10K ohm. Prinsip kerja rangkaian sangat sederhana. Ketika tombol tidak ditekan, maka output berlogika 1 (HIGH). Dan ketika tombol ditekan, maka output berlogika 0 (LOW). Dengan rangkaian sederhana ini, kita dapat memberikan input berupa perubahan logika ke mikrokontroler dari logika 1 ke logika 0 sebagai sinyal bahwa tombol ditekan. Program mikrokontroler bertugas mendeteksi perubahan logika tersebut dan menjalankan aksi sesuai fungsi tombol tersebut. Pada bagian akhir tulisan ini akan diberikan contoh program sederhana pendeteksian penekanan tombol dengan aksi sederhana yakni menyalakan LED ketika tombol ditekan.
Bouncing Pada Tombol

Sesaat ketika tombol ditekan, ada kondisi dimana kontak tombol belum stabil dan oleh karenanya menghasilkan output logika yang belum stabil pula. Untuk mengatasi hal itu, maka perlu diberikan delay sesaat setelah terdeteksi perubahan logika dari HIGH ke LOW, dan melakukan pengecekan lagi terhadap tombol. Jika setelah delay tombol masih LOW, maka dapat dikatakan tombol telah ditekan secara stabil. Berikut adalah pseudo-code untuk pendeteksian penekanan tombol aktif-low.
Jika (TOMBOL=LOW) { Delay_50_ms Selama (TOMBOL=LOW) { Lakukan_Aksi }

Resistor Pull-Up Internal Pada Mikrokontroler

Port I/O pada mikrokontroler memiliki resistor pullup yang dapat diaktifkan sehingga dapat digunakan untuk menggantikan resistor pull-up R1 pada rangkaian di atas. Dengan demikian rangkaian tombol aktif-low di atas dapat disederhanakan seperti gambar rangkaian di samping. Pada mikrokontroler AVR, jika bit DDRx diset 1 (pin yg bersangkutan berfungsi sebagai output) dan bit PORTx diset 1 (pin yang bersangkutan berlogika 1), maka resistor pull-up internal pada pin tersebut akan aktif.
Contoh Program Pendeteksian Tombol Aktif-Low (AVR-GCC)

Pada contoh program ini, rangkaian tombol aktif-low terhubung ke PORTB.0 (PB0), dan rangkaian LED aktif-high terhubung ke PORTB.1 (PB1).
#define F_CPU 1000000UL #include #include #define ON 1 #define OFF 0 //macro LED ON/OFF untuk LED Aktif-High #define LED_AH(x) ((x)==(ON) ? (PORTB|=_BV(PB1)) : (PORTB&=~_BV(PB1))) int main(void) { PORTB = 0b00000001; //LED=OFF, Resistor Pull-up internal PB0 aktif DDRB = 0b00000010; //PB1=OUTPUT, PB0=INPUT while(1) { if (bit_is_clear(PINB, PB0)) { _delay_ms(50);

//jika PB0 = LOW (tombol ditekan) //debouncing delay

while (bit_is_clear(PINB, PB0)) //selama tombol ditekan { LED_AH(ON); //LED = ON //... } LED_AH(OFF); //LED = OFF } } }

Contoh Program Pendeteksian Tombol Aktif-Low (Arduino)

Pada contoh program ini, rangkaian tombol aktif-low terhubung ke pin-11, dan rangkaian LED aktif-high terhubung ke pin-13.
int TOMBOL; void setup() { pinMode(13, OUTPUT); pinMode(11, INPUT); digitalWrite(11, HIGH); //aktifkan resistor pull-up internal } void loop() { TOMBOL = digitalRead(11); if (TOMBOL==LOW) { delay(50); while(TOMBOL==LOW) { digitalWrite(13, HIGH); TOMBOL = digitalRead(11); } digitalWrite(13, LOW); } }

Contoh-contoh program di atas dapat ditulis dengan lebih efisien jika tujuannya hanya menyalakan LED ketika tombol ditekan. Kedua contoh program di atas dapat langsung digunakan dan dikembangkan sesuai dengan aplikasi yang Anda buat. Program ditulis dengan lebih detail agar algoritma pendeteksian penekanan tombol aktif-low dapat lebih mudah dipahami. Catatan: Nilai delay tidak harus 50ms. Nilai tersebut dapat diganti dengan 10ms, 20ms, 100ms, silakan bereksperimen sendiri. Teknik pendeteksian penekanan tombol yang dibahas pada tulisan ini sangat boleh jadi bukanlah teknik yang terbaik, jadi tetaplah membaca dan bereksperimen.

Anda mungkin juga menyukai