3.9. Sakelar dan resistor pull¶
Output GPIO menggerakkan perangkat keras eksternal. Input GPIO adalah kebalikannya: kamera membaca tegangan pada pin dan melaporkannya sebagai 0 atau 1. Perangkat input paling sederhana adalah sakelar -- dan membuatnya dapat dibaca secara andal memerlukan satu komponen elektronik selain sakelar itu sendiri.
3.9.1. Sakelar dan input mengambang¶
Sakelar adalah kontak mekanis: dua keping logam yang bersentuhan ketika sakelar tertutup dan terpisah ketika terbuka. Secara elektris, itulah seluruh perangkat. Tidak ada sumber tegangan di dalamnya; sakelar saja hanya menyediakan "terhubung" atau "terputus".
Menghubungkan sakelar langsung antara pin GPIO dan ground berarti pin tersebut:
Di 0 V saat sakelar tertutup (sekarang terhubung ke ground).
Mengambang saat sakelar terbuka (tidak terhubung ke mana pun).
Pin yang mengambang tidak memiliki tegangan yang terdefinisi. Input membaca apa pun yang kebetulan ada di dekatnya -- crosstalk dari sinyal terdekat, kebisingan dari sumber daya, bahkan muatan statis pada jari yang dekat dengan kabel. value() mengembalikan campuran 0 dan 1 yang tidak dapat diprediksi berkali-kali per detik.
3.9.2. Resistor pull-up dan pull-down¶
Solusinya adalah resistor pull: resistor bernilai tinggi (10 kΩ hingga 100 kΩ adalah nilai tipikal) yang menghubungkan input ke rail yang diketahui saat sakelar terbuka.
Konfigurasi pull-up (kiri) dan pull-down (kanan) untuk input sakelar.¶
Pull-up. Resistor menghubungkan input ke rail sumber daya. Saat sakelar terbuka, hanya arus kecil yang mengalir melalui resistor dan pin membaca tinggi. Saat sakelar tertutup, pin dihubung-singkat ke ground; pin membaca rendah. Resistor membatasi arus yang akan mengalir dari sumber daya ke ground melalui sakelar yang tertutup.
Pull-down. Gambar cermin: resistor menghubungkan input ke ground, dan sakelar terhubung ke sumber daya. Terbuka membaca rendah, tertutup membaca tinggi.
Pull-up adalah konvensi yang lebih umum -- tombol "aktif rendah". MCU itu sendiri menyediakan pull-up dan pull-down bawaan yang dapat diaktifkan dengan Pin.PULL_UP atau Pin.PULL_DOWN, menghilangkan resistor eksternal sepenuhnya.