Langsung ke isi
Stasiun 3 · MikrokontrolerInput digital: tombol dan pull-up

Materi 6 dari 12 · Stasiun 3

Input digital: tombol dan pull-up

20 menit8 kartuDraf AI · belum direview

Setelah materi ini, kamu bisa:

  • Bisa membaca tombol dengan digitalRead dan memakai pull-up atau pull-down.
  • Bisa menjelaskan kenapa pin yang tidak tersambung ke mana pun terbaca acak.
  • Bisa menjelaskan pantulan tombol (bouncing) dan cara sederhana mengatasinya.

Papan yang bisa mendengar

Di materi Output digital: LED berkedip, papanmu berbicara lewat LED. Sekarang ia belajar mendengar, misalnya mengetahui kapan tombol ditekan.

Kedengarannya mudah, sambungkan tombol ke pin lalu baca. Tapi ada jebakan yang membuat banyak pemula bingung berjam-jam.

Tebak dulu

Satu kaki tombol disambung ke GPIO 4, kaki lain ke GND. Tidak ada komponen lain.

  1. Saat tombol tidak ditekan, digitalRead(4) menghasilkan...
    • Selalu 1
    • Selalu 0
    • Acak, kadang 0 kadang 1
    Jawaban

    Acak, kadang 0 kadang 1. Saat dilepas, pin tidak tersambung ke mana pun (mengambang). Ia menangkap gangguan dari sekitar dan bisa terbaca apa saja. Coba sendiri.

Mengambang, pull-up, pull-down

Coba ketiga cara menyambung. Tahan tombol lalu lepas, dan perhatikan grafik pembacaan. Kartu terbuka setelah kamu mencoba ketiga cara, masing-masing ditekan dan dilepas.

Simulasi interaktif tersedia saat JavaScript aktif.

Tanpa resistor, pin mengambang dan terbaca acak. Resistor pull-up menarik pin ke 3,3 V saat tombol dilepas (terbaca 1), dan tombol menariknya ke GND saat ditekan (terbaca 0). Pull-down kebalikannya. ESP32 punya pull-up internal yang diaktifkan dengan INPUT_PULLUP.

Program tombol dan LED

const membuat nama tetap untuk nomor pin. Kalau pin pindah, cukup ubah satu baris.

const int TOMBOL = 4;
const int LED = 2;
void setup() {
  pinMode(TOMBOL, INPUT_PULLUP);
  pinMode(LED, OUTPUT);
}
void loop() {
  if (digitalRead(TOMBOL) == LOW) {
    digitalWrite(LED, HIGH);
  } else {
    digitalWrite(LED, LOW);
  }
}
  • Baris 4: Aktifkan pull-up internal. Tidak perlu resistor luar.
  • Baris 8: Dengan pull-up, ditekan = LOW. Terbalik dari dugaan banyak orang, jadi perhatikan baik-baik.

Tombol yang memantul

Saat ditekan, kontak logam di dalam tombol memantul beberapa kali dalam beberapa milidetik. ESP32 cukup cepat untuk melihat setiap pantulan sebagai tekanan terpisah.

Kalau programmu menghitung berapa kali tombol ditekan, satu tekanan bisa terhitung 3 atau 5 kali.

Cara paling sederhana mengatasinya (debounce): setelah mendeteksi perubahan, tunggu sekitar 20–50 ms, lalu baca lagi. Kalau masih sama, barulah dianggap tekanan sungguhan.

Cek pemahaman

  1. Pin memakai INPUT_PULLUP. Tombol ditekan. digitalRead menghasilkan...
    • HIGH (1)
    • LOW (0)
    • Acak
    Jawaban

    LOW (0). Tombol menyambung pin ke GND, jadi LOW.

  2. GPIO mana yang TIDAK punya pull-up internal di ESP32 klasik?
    • GPIO 4
    • GPIO 34
    • GPIO 18
    Jawaban

    GPIO 34. GPIO 34–39 hanya masukan dan tidak punya pull-up atau pull-down internal (lihat Papan ESP32 / Arduino dan pin-nya). Kalau dipakai untuk tombol, pasang resistor luar.

Benar atau salah?

  1. "Pin yang tidak tersambung ke apa pun terbaca 0."
    • Benar
    • Salah
    Jawaban

    Salah. Pin mengambang terbaca acak. Selalu pakai pull-up atau pull-down.

  2. "Tombol yang dilepas otomatis bernilai 0 V."
    • Benar
    • Salah
    Jawaban

    Salah. Tombol yang dilepas hanya memutus jalur. Tegangan pin ditentukan oleh resistor pull-up (3,3 V) atau pull-down (0 V), bukan oleh tombol.

Selesai

  • Pin masukan tanpa resistor mengambang dan terbaca acak.
  • Pull-up membuat dilepas = 1, ditekan = 0. Pull-down kebalikannya. INPUT_PULLUP mengaktifkan pull-up internal.
  • Tombol memantul. Tunggu 20–50 ms sebelum memastikan.

Pancingan

Tombol hanya punya dua keadaan. Bagaimana membaca sensor yang nilainya berubah halus, seperti LDR dan termistor? Itu ADC: membaca sensor analog.

Berikutnya

Referensi
  • Arduino Language Reference, pinMode() dan digitalRead().
  • Espressif, ESP32 Series Datasheet dan ESP-IDF GPIO, bagian pull-up internal dan pin hanya-masukan.
  • J. Ganssle, A Guide to Debouncing, 2004 (artikel tentang pantulan kontak).

Draf AI. Belum direview manusia.

Kode materi p5 · versi 0.1 · 2026-10-06