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.

Two circuit diagrams side by side. Left: a pull-up circuit with a resistor from the input pin up to the supply and a switch from the input pin down to GND. Right: a pull-down circuit with a resistor from the input pin down to GND and a switch from the input pin up to the supply.

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.