Elektronika & Robotika Dasar

Pertemuan 2

Input Digital - Push Button & Touch Sensor (TTP223)

Tujuan Pembelajaran

  • Memahami cara kerja push button dan touch sensor sebagai input digital.
  • Memahami konsep pull-up resistor pada push button.
  • Memahami prinsip kerja sensor sentuh kapasitif (TTP223).
  • Mampu membaca status keduanya dan meresponnya lewat output sederhana.

Penjelasan Konsep

Cara kerja push button

Push button adalah saklar sederhana yang menghubungkan atau memutus jalur listrik saat ditekan. Masalahnya, ketika tombol tidak ditekan, pin input bisa berada dalam kondisi "mengambang" (floating) - nilainya tidak pasti HIGH atau LOW.

Pull-up resistor

Pull-up resistor menarik pin ke HIGH saat tombol tidak ditekan; saat ditekan, pin jadi LOW. Arduino Uno dan ESP32 punya pull-up internal yang bisa diaktifkan lewat kode (INPUT_PULLUP), sehingga tidak perlu resistor tambahan.

Sensor Sentuh TTP223

TTP223 adalah modul sensor sentuh kapasitif - mendeteksi sentuhan jari tanpa perlu tombol mekanik yang ditekan fisik. Modul ini punya 3 pin: VCC, GND, dan SIG/OUT/I (output HIGH saat disentuh). Beberapa modul TTP223 punya jumper solder untuk memilih mode:

  • Momentary (A) - output HIGH hanya selama disentuh (seperti tombol biasa).
  • Toggle (B) - output berganti HIGH/LOW setiap kali disentuh (seperti saklar lampu).

Sensor sentuh lebih tahan lama dibanding tombol mekanik karena tidak ada bagian yang bergerak/aus, dan cocok untuk panel kontrol yang ingin terlihat rapi/flat.

Debouncing

Secara fisik, saat tombol ditekan/dilepas, kontaknya bisa "bergetar" beberapa milidetik sehingga pembacaan jadi tidak stabil (disebut bouncing). Solusinya bisa dengan menambahkan sedikit delay() setelah pembacaan.

Kesalahan umum

  • Lupa mengaktifkan pull-up (baik internal INPUT_PULLUP maupun resistor eksternal) - pin jadi floating, nilainya bisa berubah-ubah sendiri walau tombol tidak disentuh.
  • Tertukar logika HIGH/LOW - dengan INPUT_PULLUP, tombol yang "ditekan" justru berarti LOW, bukan HIGH. Banyak siswa menulis if (digitalRead(pin) == HIGH) untuk kondisi "ditekan" dan bingung kenapa logikanya terbalik.
  • Salah jumper mode TTP223 - jika modul disolder ke mode Toggle (B) padahal kode mengasumsikan mode Momentary (A), perilaku LED jadi tidak sesuai harapan (menyala terus setelah disentuh sekali, bukan hanya selama disentuh).
  • Mengabaikan debounce - tanpa jeda sedikit pun setelah pembacaan, satu kali tekan tombol mekanik bisa terbaca sebagai beberapa kali tekan akibat getaran kontak.

Komponen yang Dibutuhkan

  • 1x Arduino Uno atau ESP32
  • 1x Tactile Push Button
  • 1x Modul Touch Sensor TTP223
  • 1x LED + resistor 220Ω (untuk indikator)
  • Breadboard, kabel jumper

Diagram / Skema Pengkabelan

Tactile Push Button:
  Kaki 1 -> pin digital (mis. D2)
  Kaki 2 -> GND
  (Gunakan pinMode(D2, INPUT_PULLUP) sehingga tidak perlu resistor pull-up eksternal)

Modul TTP223:
  VCC -> 5V (atau 3.3V untuk ESP32)
  GND -> GND
  SIG -> pin digital (mis. D3)

LED indikator:
  Anoda (kaki panjang) -> resistor 220Ω -> pin digital (mis. D8)
  Katoda (kaki pendek) -> GND

Contoh Kode Program

// Membaca push button (pull-up internal) dan touch sensor TTP223

const int pinTombol = 2;
const int pinTouch = 3;
const int pinLed = 8;

void setup() {
  pinMode(pinTombol, INPUT_PULLUP); // HIGH saat tidak ditekan, LOW saat ditekan
  pinMode(pinTouch, INPUT);         // TTP223 output HIGH saat disentuh
  pinMode(pinLed, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  bool tombolDitekan = (digitalRead(pinTombol) == LOW);
  bool disentuh = (digitalRead(pinTouch) == HIGH);

  digitalWrite(pinLed, (tombolDitekan || disentuh) ? HIGH : LOW);

  if (tombolDitekan) Serial.println("Push button ditekan!");
  if (disentuh) Serial.println("Touch sensor disentuh!");

  delay(50);
}

Tugas / Latihan

  1. Bandingkan responsivitas push button dan TTP223 - mana yang terasa lebih cepat/nyaman dipakai berulang kali?
  2. Ubah program agar LED menyala bergantian ON/OFF setiap kali TTP223 disentuh (toggle), bukan hanya menyala selama disentuh.
  3. (Tantangan) Tambahkan penghitung (counter) yang mencatat berapa kali push button sudah ditekan sejak program mulai berjalan, lalu tampilkan angkanya ke Serial Monitor setiap kali bertambah. Pastikan satu kali tekan hanya dihitung satu kali (atasi masalah debounce/pembacaan berulang).