Ini adalah channel #2 AL QOLAM JAYA setelah yang pertama AL QOLAM JAYA diretas pihak tak bertanggung jawab.
Sumber 1. www.hwlibre.co...
Sumber 2. starduino.word...
Sumber 3. sunupradana.in...
Sumber 4. www.scribd.com...
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 pull-up 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, Res Pull-up internal PB0 aktif
DDRB = 0b00000010; //PB1=OUTPUT, PB0=INPUT
while(1)
{
if (bit_is_clear(PINB, PB0)) //jika PB0 = LOW (tombol ditekan)
{
_delay_ms(50); //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);
}
}
Негізгі бет Bouncing Botton Counter Arduino Uno
Пікірлер