Cara Menghubungkan dan Memprogram Push Button di Arduino
Push button dapat digunakan untuk mengontrol LED, relai, motor dan hampir semua hal lain yang ada dalam pikirkan dan imajinasi Anda.
Pada artikel ini, kita akan belajar bagaimana menghubungkan dan memprogram push button pada Arduino. Kita juga akan belajar tentang floating pin, resistor pull up dan sesistor pull down, fungsinya digitalRead() dan resistor pull up internal Arduino. Setelah membaca artikel ini, Anda akan dapat menambahkan push button ke proyek apa pun.
Pengantar Push Button
Push button tersedia dalam berbagai format berbeda, seperti:
Push button yang akan kita gunakan dalam artikel ini juga dikenal sebagai sakelar taktil atau momentary push button:
Pin di setiap sisi button memiliki kontak listrik di dalam button housing. Button itu sendiri memiliki sepotong logam konduktif listrik yang melekat padanya. Ketika button ditekan, sirkuit ditutup antara pin di setiap sisi dan arus dibiarkan mengalir di antara mereka:
Contoh Proyek
Untuk mendemonstrasikan cara mengontrol perangkat dengan push button, mari buat rangkaian yang dapat menyalakan LED saat button ditekan. LED hanyalah sebuah contoh, Anda dapat menggunakan rangkaian ini untuk mengontrol perangkat apa pun yang ditenagai oleh sinyal berupa 5 volt.
Ini adalah bagian yang diperlukan untuk membangun proyek:
- Arduino
- Kabel jumper
- Project Board atau Papan Breadboard
- IC Schmitt SN74HC14N
- Push button taktil
- Resistor 10K Ohm
- Kapasitor1 uF
Ikuti diagram ini untuk menghubungkan sirkuit:
Nilai resistor pembatas arus dapat berupa apa saja dari 200 Ohm hingga 1K Ohm.
Satu sisi push button dihubungkan ke 5 volt dan sisi lainnya terhubung ke pin 7 pada Arduino. Ketika tombol ditekan, arus akan mengalir ke pin 7 sehingga menjadi HIGH. Kami akan menggunakan fungsi digitalRead() untuk mendeteksi ketika itu terjadi. Kemudian kita akan menggunakan fungsi digitalWrite() untuk mengatur pin 11 tinggi, hal tersebut dapat membuat LED menyala.
Cara memprogram Push Button di Arduino
Setelah rangkaian terhubung, unggah kode ini ke Arduino:
Di bagian atas sketsa kami mendeklarasikan dua variabel pin. Variabel buttonPin akan menahan nomor pin dari pin Arduino yang terhubung ke tombol (pin 7). Variabel ledPin akan menahan nomor pin Arduino yang terhubung ke LED.
Di bagian setup() ini, kami menggunakan fungsi pinMode() untuk mengatur buttonPin sebagai input. Kemudian kita atur ledPin sebagai output.
Di bagian loop() ini, kami mendeklarasikan variabel int yang dipanggil buttonState dan menyetelnya sama dengan digitalRead(buttonPin). Saat tombol tidak ditekan, tegangan pada tombol buttonPin akan rendah, sehingga fungsi digitalRead() akan mengembalikan nilai rendah. Nilai rendah disimpan dalam variabel buttonState. Saat tombol ditekan, tegangan pada tombol buttonPin akan menjadi tinggi, sehingga nilai yang tinggi akan disimpan dalam variabel buttonState.
Kami menggunakan fungsi digitalWrite() untuk mengirim sinyal tegangan ke LED. Pin yang ingin kita kirimi tegangan adalah ledPin argumen pertama. Argumen kedua dari digitalWrite() memberitahu fungsi untuk mengirim tegangan tinggi atau rendah ke pin. Tetapi alih-alih menulis tinggi atau rendah, kita dapat menggunakan variabel buttonState dan fungsi akan menulis nilai apa pun yang disimpan dalam variabel itu ke ledPin.
Pin Mengambang
Jika Anda membangun proyek di atas dan mengujinya, Anda akan melihat bahwa sesuatu yang aneh sedang terjadi. LED mungkin akan menyala dan mati setiap kali Anda menggerakkan tangan Anda ke dekat tombol. Apa yang bisa menyebabkan itu?
Pin digital Arduino sangat sensitif. Bahkan medan elektromagnetik lemah yang dibuat oleh tangan Anda dapat dideteksi oleh Arduino. Dan itu terdaftar sebagai sinyal tinggi oleh fungsinya digitalRead().
Ketika pin GPIO diizinkan untuk mengambil medan elektromagnetik yang menyimpang, mereka disebut pin mengambang. Kita perlu memperbaikinya dengan memastikan buttonPin tetap rendah saat tombol tidak ditekan. Jadi bagaimana kita bisa melakukan itu?
Resistor Pull Down
Cara termudah adalah menghubungkan resistor dari sisi kiri tombol tekan ke ground, seperti ini:
Ketika tombol tidak ditekan, energi elektromagnetik yang menyimpang akan mengalir ke ground melalui resistor. Ketika tombol ditekan, resistor akan membatasi aliran arus ke ground dan arus akan mengalir ke pin 7. Ini disebut resistor pull down karena menghubungkan pin ke ground untuk menjaganya dalam keadaan tegangan rendah. Nilai resistor pull down dapat bervariasi, tetapi biasanya lebih tinggi dari 10K Ohm.
Resistor Pull Up
Resistor pull up lebih umum daripada resistor pull down. Resistor pull up terhubung ke sumber tegangan dan menjaga pin dalam keadaan tegangan tinggi:
Pada rangkaian ini, resistor pull up dihubungkan dengan tegangan 5 volt dan sisi kanan tombol dihubungkan ke ground. Push button akan mengirim sinyal rendah ke pin 7, menyalakan LED. Resistor pull up diikat ke 5 volt dan menjaga pin 7 tetap tinggi sampai push button ditekan.
Kode untuk menggunakan resistor pull up terlihat seperti ini:
Serupa dengan program sebelumnya, kita mendeklarasikan variabel untuk variabel buttonPin dan ledPin dan menetapkannya sebagai output. Kemudian kita menggunakan fungsi digitalRead() untuk mendeteksi keadaan tegangan buttonPin dan menyimpannya dalam variabel buttonState.
Kami ingin Arduino mengirim sinyal tinggi ke ledPin saat variabel buttonState rendah. Di bagian loop() ini, kami menggunakan dua pernyataan if untuk mengontrol apa yang terjadi ketika variabel buttonState tinggi atau rendah. Jika buttonState rendah, pernyataan if pertama dieksekusi dan ledPin ditulis tinggi. Jika variabel buttonState tinggi, program memasuki pernyataan if kedua dan tegangan rendah ditulis ke ledPin.
Jadi sekarang ketika Anda menekan tombol, LED seharusnya menyala dan tidak berkedip ketika Anda menggerakkan tangan Anda di sekitar sirkuit. Masalah pin mengambang terpecahkan.
Resistor Pull Up Internal Arduino
Resistor pull up dan pull down yang kita lihat dalam artikel ini adalah komponen rangkaian eksternal. Tetapi Arduino juga memiliki resistor pull up internal yang dapat Anda gunakan untuk tujuan yang sama. Untuk menggunakan resistor pull up internal Arduino, gunakan INPUT_PULLUP sebagai argumen kedua dalam fungsi pinMode() buttonPin seperti ini:
Sekarang Anda dapat menghubungkan rangkaian tanpa resistor pull up yang terhubung ke 5 volt. Resistor pull up internal menggunakan satu komponen lebih sedikit dan membuat rangkaian sedikit lebih sederhana.
Sumber: Artikel lengkap pada post ini dapat Anda baca di Circuit Basics