Pertama, lupakan resistor 100 for untuk saat ini. Ini tidak diperlukan untuk kerja tombol, itu hanya ada sebagai perlindungan jika Anda akan membuat kesalahan pemrograman.
- Jika tombol ini ditekan, P2 akan langsung terhubung ke +5 V, sehingga akan terlihat sebagai level tinggi, menjadi "1".
- Jika tombol dilepaskan +5 V tidak masuk hitungan lagi, hanya ada 10 kΩ antara port dan ground.
Pin I / O mikrokontroler adalah impedansi tinggi ketika digunakan sebagai input, yang berarti hanya mengalir arus bocor kecil, biasanya jauh lebih kecil dari 1 μA, yang akan menjadi maksimum menurut lembar data. OK, katakanlah itu 1 μA. Maka menurut Hukum Ohm ini akan menyebabkan penurunan tegangan 1 μA 10 kΩ = 10 mV melintasi resistor. Jadi inputnya adalah 0,01 V. Itu level rendah, atau "0". Umumnya mikrokontroler 5 V akan melihat level lebih rendah dari 1.5 V sebagai rendah. ×
Sekarang resistor 100.. Jika Anda secara tidak sengaja membuat pin output dan menetapkannya rendah maka menekan tombol akan menyebabkan korsleting: mikrokontroler menetapkan 0 V pada pin, dan saklar +5 V pada pin yang sama. Mikrokontroler tidak suka itu, dan IC mungkin rusak. Dalam kasus tersebut, resistor 100 should harus membatasi arus hingga 50 mA. (Yang masih agak terlalu banyak, resistor 1 kΩ akan lebih baik.)
Karena tidak akan mengalir arus ke pin input (terlepas dari kebocoran rendah) hampir tidak akan ada penurunan tegangan di resistor.
10 kΩ adalah nilai tipikal untuk pull-up atau pull-down. Nilai yang lebih rendah akan memberi Anda penurunan tegangan yang lebih rendah, tetapi 10 mV atau 1 mV tidak membuat banyak perbedaan. Tapi ada hal lain: jika tombol ditekan ada 5 V melintasi resistor, sehingga akan mengalir arus 5 V / 10 kΩ = 500 μA. Itu cukup rendah untuk tidak menyebabkan masalah, dan Anda tidak akan menekan tombol untuk waktu yang lama. Tetapi Anda dapat mengganti tombol dengan saklar, yang mungkin ditutup untuk waktu yang lama. Maka jika Anda akan memilih pull-down 1 kΩ Anda akan memiliki 5 mA melalui resistor selama saklar ditutup, dan itu sedikit sia-sia. 10 kΩ adalah nilai yang baik.
Perhatikan bahwa Anda dapat membalikkannya untuk mendapatkan resistor pull-up, dan beralih ke ground saat tombol ditekan.
Ini akan membalikkan logika Anda: menekan tombol akan memberi Anda "0" alih-alih "1", tetapi cara kerjanya sama: menekan tombol akan membuat input 0 V, jika Anda melepaskan tombol, resistor akan menghubungkan masukan ke level +5 V (dengan penurunan voltase yang dapat diabaikan).
Ini adalah cara yang biasa dilakukan, dan produsen mikrokontroler mempertimbangkan hal ini: sebagian besar mikrokontroler memiliki resistor pull-up internal, yang dapat Anda aktifkan atau nonaktifkan dalam perangkat lunak. Jika Anda menggunakan pull-up internal, Anda hanya perlu menghubungkan tombol ke ground, itu saja. (Beberapa mikrokontroler juga memiliki pull-down yang dapat dikonfigurasi, tetapi ini jauh lebih jarang terjadi.)