Materi ini mengulas kembali serta melengkapi materi sebelumnya tentang Push Button. Push Button adalah tombol tekan, tombol yang ON pada saat ditekan dan OFF bila dilepaskan kembali. Untuk sementara ini ON/OFF dari Push Button boleh dianggap mewakili HIGH/LOW. Push Button sering dipakai sebagai komponen masukan.
Ketidak Pastian
Secara teknis, HIGH itu berupa sinyal tegangan sebesar 5 Volt, sedangkan LOW berupa sinyal tegangan 0 Volt. Perhatikan contoh berikut ini.
Pin 6 dari microcontroller dikonfigurasi sebagai masukan (input). Pada saat Push Button ditekan, masukan HIGH (sinyal tegangan 5 Volt) diterima oleh microcontroller melalui pin 6. Pertanyaannya, jika Pus Button dilepaskan apakah hal itu berarti masukan LOW diterima oleh microcontroller?
Jawabannya: TIDAK
Mengapa? Karena LOW itu sinyal tegangan 0 Volt, sehingga pada saat tidak ditekan Push Button seharusnya menghubungkan pin 6 ke ground (G). Inilah yang menyebabkan pin 6 dalam kondisi tak menentu. Hal ini tidak boleh terjadi!
Untuk mengatasinya, perlu dipasang komponen Resistor yang lebih sering disebut sebagai resistor pull-up.
Selama Push Button belum ditekan, resistor pull-up memberikan masukan 5 Volt (HIGH atau 1) ke pin 6. Begitu ditekan, Push Button memberikan masukan 0 Volt (LOW atau 0) ke pin 6.
Resistor Pull-up Internal
Selain menggunakan Resistor Pull-Up eksternal seperti pada rangkaian diatas, kita dapat memakai Resistor Pull-Up internal yang tersedia di microcontroller. Kita hanya perlu mengatakan kepada program untuk memakai Resistor Pull-Up internal.
Pada rangkaian diatas, selama Push Button tidak ditekan, pin 6 akan menerima masukan HIGH (atau 1) yang berasal dari Resistor Pull-Up internal.
Pembacaan Input
Pada rangkaian diatas, pin 6 telah dikonfigurasi sebagai masukan dengan melibatkan Resistor Pull-Up internal. Kita bisa meminta program untuk menuggu masukan pada pin tersebut. Masukan tersebut berupa Push Button tidak ditekan (masukan 1 atau HIGH) dan push Button ditekan (masukan 0 atau LOW).
digitalRead(6);
Hasil pembacaan masukan pada pin 6 disimpan ke dalam sebuah variabel, misalkan bernama "hasilBaca" dengan tipe data integer.
int hasilBaca = digitalRead(6);
Marilah kita perhatikan contohnya dalam kode program yang lengkap.
int tombolTekan = 0;
void setup() {
Serial.begin(9600);
pinMode(6, INPUT_PULLUP);
}
void loop() {
int hasilBaca = digitalRead(6);
delay(10);
if (tombolTekan != hasilBaca) {
tombolTekan = hasilBaca;
Serial.println(tombolTekan);
}
}
Mula-mula tombolTekan berisi 0, dan Push Button belum ditekan. Meskipun demikian, pin 6 sudah menerima masukan HIGH (atau 1) yang berasal dari Resistor Pull-Up internal. Nilai 1 tersimpan ke dalam hasilBaca.
Pembandingan ketidaksamaan nilai tombolTekan (0) dan hasilBaca (1) pada pernyataan IF memberikan hasil true, sehingga blok kode dieksekusi. Variabel tombolTekan diisi dengan nilai 1 dari hasilBaca, sehingga sekarang tombolTekan berisi 1. Nilai dari tombolTekan dicetak pada Serial Monitor dan itulah sebabnya tercetak bilangan 1.
Pada saat Push Button ditekan, pin 6 menerima masukan LOW (atau 0). Nilai 0 ini tersimpan ke dalam hasilBaca. Pembandingan ketidaksamaan nilai tombolTekan (1) dan hasilBaca (0) pada pernyataan IF memberikan hasil true. Blok kode dieksekusi dengan memasukkan nilai hasilBaca ke dalam tombolTekan, sehingga sekarang tombolTekan berisi 0. Nilai tersebut dicetak pada Serial Monitor, dan terlihatlah bilangan 0 disana.




Posting Komentar