Pushbutton

Sebelumnya kita telah belajar tentang bagaimana mengendalikan LED. Untuk mengendalikan LED kita menjadi pin pada Arduino sebagai OUTPUT. Pada bagian ini kita akan membahas tentang bagaimana menjadikan pin Arduino sebagai INPUT dan sebagai aplikasinya, kita akan menggunakan komponen pushbotton dan potensiometer sebagai input untuk mengendalikan LED. Bagian ini akan menjadi dasar agar Anda memahami bagaimana membuat Arduino bisa membaca sensor untuk mendeteksi kondisi lingkungan sekitar.

3.1 Pushbutton

Pertama kita akan bermain dengan tombol pushbutton (tactile) atau tombol push on. Ketika tombol ini ditekan, maka jalur akan tertutup (ON), ketika dilepas jalur akan kembali terbuka (OFF). Tombol banyak digunakan untuk peralatan seperti remote, keypad, keyboard, atau tombol untuk pengaturan TV, ld atau sejenisnya.

Gambar 3.1 Pushbutton dan simbolnya

Gambar 3.1 merupakan bentuk fisik pushbutton dan salah satu simbol pushbotton jenis NO (Normally Open) dalam rangkaian elektronik. Berdasarkan simbol tersebut, Normally Open berarti kondisi normal (sebelum ditekan), maka terminal dalam kondisi tidak tersambung (open, terbuka). Tapi ketika ditekan, maka masing-masing terminal akan terhubung.

Selain jenis NO, ada juga pushbutton jenis NC (Normally Close), artinya ketika kondisi normal (sebelum ditekan), kaki terminal dalam keadaan terturup / tersambung (Close), tapi ketika ditekan, kaki terminalnya terbuka (tidak tersambung). Dalam ebook ini, kita akan menggunakan jenis pushbutton NO.

Satu Tombol dan Satu LED

Percobaan kali ini adalah untuk mengendalikan hidup/matinya- nya LED dengan tombol pushbutton. Jika tombol ditekan, LED akan menyala, jika dilepas, LED kembali padam.

Untuk melakukan percobaan ini, siapkan sebuah pushbutton, sebuah LED, dan sebuah resistor. Siapkan juga beberapa kabel jumper untuk merangkai komponen-komponen tersebut.

TUGAS 4

Buat Rangkaian LED dan Pushbutton Rangkaian 3.1 mengunakan Skecht 3.1 dibawah :

Tinkercad

Masukkan Nickname yang sudah terdaftar.


Rangkaian

Silakan buat rangkaian seperti Rangkaian 3.1 berikut:

Rangkaian 3.1 Pushbutton dan LED


  1. Siapkan LED dan pushbutton pada project board. Karena karena pushbutton memiliki 4 buah kaki yang masing-masing terpisah, maka silakan tancapkan pushbutton di tengah-tengah lajur project board sehingga kaki-kainya tidak tersambung.
  2. Salah satu kaki pushbutton dihubungkan ke GDN di project board, sedangkan kaki pasangannya disambungkan ke pin 2 pada board Arduino. Bagaimana cara mengetahui pasangan kaki-kaki pada pushbutton? Anda bisa mengeceknya dengan AVO meter. Setting AVO meter untuk menghitung resistansi, kemudian cek masing-masing pin pushbutton dengan probe. Jika tombol ditekan jarum AVO meter bergerak menyimpang, berarti kaki-kaki tersebut sepasang.
  3. Untuk LED, sambungkan kaki negatif (pin yang lebih pendek) ke GND dengan resistor
  4. Kaki positif (kaki yang lebih panjang) disambungkan ke pin 8 pada board Arduino dengan jumper.

Program

Mari kita coba dengan program berikut:

Sketch 3.1 Mengendalikan LED dengan pushbutton

Pertama kali dijalankan, maka awalnya LED akan padam. ketika kita menekan tombol pushbutton, maka LED akan menyala. LED akan kembali padam ketika tekanan tombol dilepas. Pada Sketch 3.1 di atas ada beberapa baris kode baru:

Baris 6 berfungsi untuk mengeset pinButton sebagai INPUT. Jika sebuah pin diset sebagai INPUT, maka mikrokontroller akan mengambil data dari pin tersebut. Jika sebuah pin diset sebagai OUTPUT, maka mikrokontroller akan menuliskan data pada pin tersebut. dalam hal ini, mikrokontroller akan mengambil data yang dari pushbutton.

Perhatikan baris ke-14. Nilai pinButton awalnya diset HIGH. Kenapa diset HIGH? Kenapa bisa diset nilai pinnya menjadi HIGH, padahal pin tersebut tidak terhubung dengan +5V?

Begini, pemilihan settingan awal dengan HIGH atau LOW untuk pinButton tergantung pada rangkaian yang akan digunakan. Rangkaian 3.1  menghubungkan  pinButton  (pin  8)  ke  GND,  artinya,  ketika pushbutton  ditekan  maka  pinButton  (pin  8)  akan  menjadi  0  (LOW). Padahal defaultnya, setiap pin bernilai LOW. Jika pin awalnya bernilai LOW,  kemudian  ditekan  tetap  bernilai  LOW,  lalu  apa  gunanya pushbutton?

Padahal, fungsi utama dari saklar (dalam hal ini adalah pushbutton) adalah mengubah nilai yang awalnya LOW menjadi HIGH, atau sebaliknya. Nah, karena ketika pushbutton ditekan akan bernilai LOW (ke GND), maka awalnya harus kita set menjadi HIGH. Sehingga logika untuk pushbutton tersebut adalah: ketika tidak ditekan HIGH, ketika ditekan LOW.

Kondisi tersebut yang akan digunaka untuk mendeteksi apakah

pushbutton tersebut ditekan atau tidak. Silakan perhatikan baris ke-18.

Pada  baris  18,  fungsi  digitalRead()  untuk  membaca  logika  pada pinButton. Jika pinButton ditekan (LOW), maka hidupkan LED dengan perintah digitalWrite(pinLtfD,HIGH). Ketika pinButton bernilai HIGH, matikan LED. Sederhana bukan?

Untuk pertanyaan yang kedua, kenapa pin INPUT bisa diset HIGH?

Ketika kita menjadi pin INPUT sebagai HIGH, maka secara internal Arduino akan menghubungkan pin tersebut pada resistor pull- up bernilai 20k ohm. Apa itu pull-up resistor? Jika ada pull-up, apakah juga ada pull-down resistor?

Gambar 3.2 Skema pull-up resistor

Begini, dalam elektronika digital, jika sebuah pin diset sebagai INPUT, kemudian pin tersebut belum tersambung ke VCC atau GND, maka logika pada pin tersebut masih mengambang (floating). Oleh sebab itu, pin tersebut harus ditentukan apakah akan diberi resistor pull-up (sehingga bernilai HIGH) atau diberi pull-down (sehingga bernilai LOW).

Jika pin tersebut diset HIGH, dalam internal mikrokontroller pin tersebut akan disambungkan ke VCC dengan pengaman sebuah resistor yang diistilahkan sebagai resistor pull-up. Begitu juga jika pin tersebut diset LOW, maka pin tersebut akan dihubungkan ke GND dengan pengaman resistor kemudian diistilahkan dengan resistor pull- down. Gambar 3.2 adalah rangkaian dasar pull-up resistor untuk rangkain di atas tanpa LED.

Semoga penjelasan tentang pull-up resistor bisa dipahami. Jika ada yang kurang jelas, mari kita diskusikan di website.

Mengontrol Tingkat Kecerahan LED

Sebelumnya kita sudah membahas tentang cara menghidupkan dan mematikan LED dengan sebuah pushbutton. Selanjutnya, kita akan menggunakan dua buah pushbutton dengan ketentuan : pushbutton yang pertama untuk menaikkan kecerahan LED hingga paling terang, sedangkan pushbutton yang kedua untuk menurunkan kecerahan LED hingga LED padam.

Fungsi kedua pushbutton ini mirip dengan volume-up dan volume- down. Yang satu untuk meningkatkan volume (kecerahan), sedangkan satunya lagi untuk menurunkan volume (kecerahan). Yak, setidaknya Anda paham apa yang saya maksudkan.

Setidaknya ada dua cara untuk menaikkan atau menurunkan tingkat kecerahan LED:

  1. Mengubah arus yang masuk ke LED, cara ini bisa diaplikasikan dengan mengubah nilai resistor
  2. Menghidup-matikan LED dengan cepat atau lambat. Begini, ketika kita menghidup-matikan LED dengan cepat, maka mata manusia tidak bisa mengetahuinya. Yang ditangkap oleh mata adalah terang atau redupnya saja. Jika kita menghidup- matikan led dengan cepat, maka LED tersebut akan terlihat terang, tapi kalau kita menghidup matikan LED dengan lebih lambat, maka LED akan terlihat lebih redup.

Dalam elektronika digital, konsep yang kedua dikenal dengan istilah PWM (Pulse Width Modulation). Apa itu PWM?

Sebagian kaki / pin Arduino support PWM, kaki yang support PWM ditandai dengan adanya tanda tilde (~) di depan angka pinnya, seperti 3, 5, 6, dan seterusnya. Frekuensi yang digunakan dalam Arduino untuk PWM adalah 500Hz (500 siklus dalam 1 detik). Jadi, Arduino bisa menghidup-matikan LED sebanyak 500 kali dalam 1 detik.

Untuk menggunakan PWM, kita bisa menggunakan fungsi analogWrite(). Nilai yang bisa dimasukkan pada fungsi tersebut yaitu antara 0 hingga 255. Nilai 0 berarti pulsa yang diberikan untuk setiap siklus selalu 0 volt, sedangkan nilai 255 berarti pulsa yang diberikan selalu bernilai 5 volt.

Gambar 3.3 Siklus pulsa PWM

Jika kita memberikan nilai 127 (kita anggap setengah dari 0 hingga 255, atau 50% dari 255), maka setengah siklus akan bernilai 5 volt, dan setengah siklus lagi akan bernilai 0 volt. Sedangkan jika jika memberikan 25% dari 255 (1/4 * 255 atau 64), maka 1/4 siklus akan bernilai 5 volt, dan 3/4 sisanya akan bernilai 0 volt, dan ini akan terjadi 500 kali dalam 1 detik. Untuk visualisasi siklus PWM, bisa Anda lihat Gambar 3.3.

TUGAS 5

Buat Rangkaian LED dan Pusshbutton seperti rangkaian 3.2 mengunakan Skecht 3.2 dibawah:

Tinkercad

Masukkan Nickname yang sudah terdaftar.

   

Rangkaian

Rangkaian 3.2 Pengaturan Intensitas Cahaya LED

Buatlah rangkaian seperti gambar Rangkaian 3.2. Rencananya, pushbutton yang atas untuk menyalakan dan meningkatkan kecerahan LED, sedangkan pushbutton yang bawah untuk menurunkan tingkat kecerahan LED dan memadamkannya:

  1. Seperti   biasa,  siapkan  sebuah   LED   dan   resistornya. Sambungkan kaki positif LED ke pin 8 Arduino.
  2. Kemudian kaki negatif LED disambungkan ke resistor menuju GND.
  3. Siapkan dua buah pushbutton. Pushbutton yang pertama (atas) disambunkan ke GND dan ke pin 2 pada board Arduino.
  4. Lalu pushbutton yang kedua (bawah) disambungkan ke GND dan pin 3 pada board Arduino.

Program

Sketch 3.2 Mengatur intensitas cahaya LED

Ada 3 bagian pada Sketch 3.2 yang perlu dijelaskan lebih detail, yaitu pada baris 36, 39, dan 41.

Pada baris 36, kita menemukan satu fungsi baru, yaitu constrain(). Fungsi constrain() digunakan untuk menjaga agar nilai tetap pada range yang ditentukan. Pada kasus ini, range yang ditentukan adalah antara 0 – 255. Misal nilai brightness lebih kecil dari 0, maka akan  dirubah menjadi 0, tapi jika nilai brightness lebih besar dari 255, maka akan dirubah menjadi 255.

Untuk   lebih   memahami  tentang  fungsi constrain(), silakan perhatikan isi dari fungsi constrain() di bawah ini:

Tipe dari fungsi tersebut adalah int (integer), artinya fungsi tersebut akan mengembalikan nilai integer ketika dieksekusi disesuaikan dengan nilai value (return value).

Jika diperhatikan fungsi loop() dan fungsi setup() bukanlah int, tapi void. Tipe fungsi void berbeda dengan tipe int, fungsi void tidak mengembalikan nilai apa pun, sehingga jika diperhatikan, tidak ada perintah return pada fungsi dengan tipe void. Yap, demikian sekilas tentang tipe fungsi integer dan void.

Selanjutnya, karena nilai brightness selalu antara 0-255, maka ketika dituliskan ke pinLED juga akan selalu selang antara 0-255 (perhatikan baris 39).


Fungsi analogWrite() digunakan untuk memberikan data PWM atau data analog. analogWrite() bisa menuliskan data dengan selang antara 0v hingga +5v pada pin INPUT. Berbeda dengan digitalWrite() yang hanya bisa menuliskan HIGH atau LOW, atau +5v atau 0v saja.

delay(20) berfungsi untuk mengatur durasi perubahan intensitas cahaya LED. Jika delay(20) kita hilangkan, maka LED akan langsung hidup atau langsung mati ketika tombol ditekan. Jika kecilkan nilainya, maka perubahan intensitas akan lebih cepat, dan sebaliknya, jika kita besarkan nilainya, maka perubahan intesitas akan lebih lama dengan catatan kita harus menahan ketika menekan tombol pushbutton.

Lalu bagaimana jika kita menekan kedua tombol pushbutton dengan bersamaan? Apa yang akan terjadi dengan LED? Silakan cari jawaban dan penjelasannya.

Complete and Continue  
Discussion

0 komentar