
Belajar Arduino 5
Membaca Tombol: Input Digital dan Percabangan
oleh: Suryo Adhy Chandra, ST
Pada bab-bab sebelumnya, Arduino hanya mengeluarkan perintah: menyalakan lampu, mematikannya, lalu mengulang. Program semacam itu berjalan sama terus tanpa peduli apa yang terjadi di sekitarnya. Bab ini membahas kebalikannya, yaitu bagaimana Arduino membaca keadaan dari luar, dan mengambil keputusan berdasarkan bacaan itu.
1. Input digital dan dua keadaan
Pin digital pada Arduino hanya mengenal dua keadaan: HIGH yang berarti ada
tegangan, dan LOW yang berarti tidak ada tegangan. Tombol adalah alat paling
sederhana untuk menghasilkan dua keadaan itu: ditekan atau tidak ditekan.
2. Masalah pin mengambang
Ada satu hal yang membingungkan pemula. Kalau tombol hanya disambungkan begitu saja, maka ketika tombol tidak ditekan, pin tidak tersambung ke mana-mana. Keadaan ini disebut mengambang, dan bacaannya berubah-ubah sendiri antara HIGH dan LOW karena terpengaruh gangguan listrik di sekitarnya.
Akibatnya, lampu bisa menyala sendiri tanpa tombol disentuh. Ini bukan kerusakan, melainkan rangkaian yang belum lengkap.
INPUT_PULLUP alih-alih INPUT.
INPUT_PULLUP, pin bernilai
HIGH saat tombol tidak ditekan, dan LOW saat tombol ditekan.
Ini sering membuat pemula mengira programnya salah, padahal justru sudah benar.
3. Rangkaian yang diperlukan
Resistor 220 ohm pada LED wajib dipasang. Tanpa resistor, arus yang mengalir terlalu besar dan LED akan cepat rusak, kadang hanya dalam hitungan detik.
4. Program pertama: lampu menyala saat tombol ditekan
const int untuk nomor pin bukan sekadar gaya penulisan. Kalau nanti
kabelnya dipindah ke pin lain, cukup mengubah satu baris di atas, bukan mencari angka 2 di
seluruh program.
5. Program kedua: tombol sebagai sakelar
Program di atas membuat lampu hanya menyala selama tombol ditahan. Bagaimana kalau kita ingin satu tekanan menyalakan, dan tekanan berikutnya mematikan? Di sinilah kita perlu mengingat keadaan sebelumnya.
6. Kenapa perlu delay 50 milidetik
Tombol mekanis tidak berpindah keadaan dengan bersih. Saat ditekan, kontak logamnya memantul beberapa kali dalam waktu sangat singkat. Arduino yang membaca ribuan kali per detik akan menganggapnya sebagai beberapa tekanan berbeda.
Gejalanya khas: lampu berkedip tidak menentu saat tombol ditekan sekali. Jeda singkat setelah
tekanan terbaca membuat pantulan itu terlewati. Cara ini disebut debounce, dan bab
lanjutan biasanya membahas cara yang lebih halus tanpa memakai delay.
7. Kalau tidak berjalan, periksa ini dulu
- Lampu menyala terus. Kemungkinan logikanya terbalik, coba tukar
LOWdanHIGHpada percabangan. - Lampu menyala sendiri tanpa disentuh. Kemungkinan
INPUT_PULLUPbelum dipakai, atau kabel GND belum tersambung. - Lampu tidak menyala sama sekali. Periksa arah pemasangan LED, kaki panjang menuju pin dan kaki pendek menuju resistor.
- Berkedip tidak menentu. Itu gejala pantulan tombol, tambahkan jeda debounce.
8. Latihan
- Tambahkan satu LED lagi, lalu buat program agar tombol menyalakan kedua LED bergantian setiap kali ditekan.
- Buat program yang menyalakan LED selama tiga detik setiap kali tombol ditekan, lalu mati sendiri.
- Gabungkan dengan bab rambu lalu lintas: buat tombol penyeberangan yang mengubah lampu menjadi merah setelah ditekan.