Pada Arduinos yang lebih baru, salah satu dapat mengatur pinMode ke salah satu dari tiga negara: OUTPUT
, INPUT
, dan INPUT_PULLUP
.
Halaman ini mengatakan:
Chip Atmega pada Arduino memiliki resistor pull-up internal (resistor yang terhubung ke daya secara internal) yang dapat Anda akses. Jika Anda lebih suka menggunakan ini daripada resistor pull-down eksternal, Anda bisa menggunakan argumen INPUT_PULLUP di pinMode (). Ini secara efektif membalikkan perilaku, di mana TINGGI berarti sensor mati, dan RENDAH berarti sensor menyala.
Saya agak yakin bahwa membalikkan perilaku bukanlah satu-satunya hal yang dilakukannya.
Apa yang INPUT_PULLUP
harus dilakukan Apa yang membuatnya berbeda dari INPUT
, dan bagaimana cara memutuskan mana yang akan digunakan?
Jawaban:
Standarnya adalah
INPUT
yang mengatur pin sebagaiINPUT
. Jika pin benar-benar terputus, itu akan secara acak membacaHIGH
danLOW
. Jika Anda mengikatnya ke + 5V atau 0V, itu pasti akan membacaHIGH
atauLOW
.Internal Arduino adalah resistor pullup dengan nilai sekitar 50k-ohm. Resistor ini dapat dihubungkan secara opsional menggunakan internal
INPUT_PULLUP
. Ini secara fungsional (dan elektrik) setara dengan menghubungkan resistor 50k-ohm antara pin dan + 5V, satu-satunya perbedaan adalah bahwa itu tidak memerlukan komponen eksternal dan Anda dapat menghidupkan dan mematikannya dalam perangkat lunak selama pelaksanaan program Anda.Jadi mengapa pull-up dan bukan pull-down? Mungkin ada beberapa alasan untuk itu, tetapi ketika kabel tombol atau switch atau apa pun yang "biasanya terbuka", Anda hanya perlu mengikatnya ke tanah, Anda tidak perlu menjalankan + 5V ke sana. Karena sebagian besar papan akan dirancang dengan tuangkan tanah yang besar untuk alasan melindungi, mengikat ke tanah adalah alasan praktis.
Beberapa IC lebih berfitur seperti chip ARM memiliki kedua pull up dan pull down, tetapi garis AVR 8-bit hanya dilengkapi dengan pull-up. Anda hanya perlu mengingat bahwa
HIGH
itu "terbuka" danLOW
"tertutup".sumber
Perhatikan bahwa sebelum ke 1.0.1, Anda dapat mengaktifkan pullup dengan menggunakan
digitalWrite()
. Dan kamu masih bisa.Kode:
Ini adalah perbedaan penting karena
INPUT_PULLUP
jelas menyalakan resistor pull-up. Namun, yang kurang jelas, adalah bahwa dimulai dengan 1.0.1, hanya dengan memanggilINPUT
memaksa pull-up dimatikan. (Sebelumnya, status pull-up tetap sama).Untuk melihat bagaimana pin beroperasi dengan dan tanpa pull-up, tonton video berikut.
Pin mengambang pada osiloskop: http://www.youtube.com/watch?v=dBIBFLYCjMM
Dengan Pull-Up diaktifkan: http://www.youtube.com/watch?v=SAIw7LLVl-U
Video tutorial lengkap tentang Pull-Ups (perhatikan bahwa saya membuat ini sebelum INPUT_PULLUP ditambahkan ke perpustakaan Arduino): http://www.youtube.com/watch?&v=jJnD6LdGmUo
sumber