Kenapa input butuh pull-up, bukan cuma saklar
Atau lihat semua pelajaran.
- 465komponen di meja kerja
- 43board sedang berjalan
- 1.00xwaktu nyata, di semua board
Tombol tekan, kalau sendirian, hanya bisa membuat sambungan. Tombol tidak bisa memutus sambungan yang memang tidak ada, dan jelas tidak bisa menentukan nilai yang terbaca di sebuah kabel saat tidak ada yang menyentuhnya. Sambungkan satu sisi tombol ke input digital dan sisi lainnya ke ground, tanpa apa-apa lagi di net itu, maka begitu tombol dilepas, input-nya mengambang: tidak ditarik ke high, tidak ditarik ke low, hanya berada di sisa muatan apa pun yang kebetulan tertinggal. Pada input CMOS, yang hampir tidak menarik arus ke arah mana pun, sisa muatan itu bisa bertahan lama sekali, dan bisa terbaca sebagai 1 atau 0 secara kurang lebih acak.
Resistor pull-up mengatasi ini dengan memberi net tempat tujuan saat tombol tidak ditekan. Di rangkaian di atas, resistor 10 kilohm dipasang dari 5 V ke net yang sama dengan yang ditarik tombol ke ground. Saat tombol dilepas, resistor adalah satu-satunya yang menggerakkan net, jadi net berada di 5 V: logika high yang bersih dan nyata. Tekan tombolnya, maka net tersambung langsung ke ground, yang dengan mudah mengalahkan tarikan resistor yang lemah, sehingga net turun ke 0 V yang bersih. Lepaskan, dan resistor menariknya kembali ke atas. Tidak pernah ada yang dibiarkan tanpa penggerak.
Sepuluh kilohm adalah pilihan yang disengaja, bukan aturan. Nilainya harus cukup kecil agar net kembali ke 5 V dengan cepat dan mantap, dan cukup besar agar menekan tombol tidak membuang banyak arus saat menariknya ke ground: 5 V di 10 kilohm adalah setengah miliampere, kecil dibanding hampir semua hal lain di board dan jelas cukup besar untuk menentukan tegangannya. Gerbang NOT di kanan mengubah sinyal yang high saat dilepas dan low saat ditekan menjadi LED yang menyala tepat selama tombol ditahan. Ini cara yang umum agar logikanya terbaca sesuai harapan orang, tanpa membebani net pembaca seperti kalau LED disambung langsung ke situ.
Setiap board yang dimodelkan Mokxi punya resistor yang sama di dalamnya, yang bisa dinyalakan lewat firmware. Mode INPUT_PULLUP di Uno menyalakan pull-up internal 35 kilohm di dalam ATmega328P itu sendiri, dan ESP32-C3 serta board lain menawarkan hal yang sama di pad-nya masing-masing. Itulah sebabnya sketch button bawaan membaca pin sebagai low saat tombol ditekan: resistor internal sudah melakukan tugas yang dikerjakan resistor eksternal di sini, hanya lebih lemah dan dengan satu komponen lebih sedikit di breadboard. Versi eksternal di atas adalah apa yang sebenarnya terjadi di baliknya, hanya dibuat terlihat.
Lanjutkan
Rakit versi nyatanya
Buka editor, ubah sebuah nilai, dan lihat angkanya ikut berubah. Tidak ada yang perlu dipasang, dan tidak perlu akun.