Why an input needs a pull-up, not just a switch
Ya da tüm dersleri gör.
- 503parça tezgahta
- 44kart şu an çalışıyor
- 1.00xgerçek zamanlı, her kartta
Bir buton tek başına yalnızca bağlantı kurabilir. Orada olmayan bir bağlantıyı koparamaz ve kimse dokunmuyorken bir telin ne okuduğuna kesinlikle karar veremez. Bir butonun bir tarafını dijital bir girişe, diğerini toprağa bağla ve o ağda başka hiçbir şey olmasın: buton bırakıldığı anda giriş yüzer; yüksek sürülmez, düşük sürülmez, üzerinde kalan her yük neyse onda durur. Her iki yönde de neredeyse hiç akım çekmeyen bir CMOS girişinde bu artık yük şaşırtıcı derecede uzun süre orada durabilir ve az çok rastgele 1 ya da 0 okunabilir.
Pull-up direnç, buton basılı değilken ağa gidecek bir yer vererek bunu çözer. Yukarıdaki devrede 10 kiloohm'luk bir direnç 5 V'tan butonun toprağa çektiği aynı ağa gider. Buton bırakıldığında ağı süren tek şey dirençtir, bu yüzden 5 V'ta durur: temiz, gerçek bir mantık yüksek. Butona bas ve ağı doğrudan toprağa bağlar; bu, direncin zayıf çekişini kolayca bastırır ve ağ temiz bir 0 V'a düşer. Bırak ve direnç onu geri yukarı çeker. Hiçbir şey asla sürülmeden kalmaz.
On kiloohm bir kural değil, bilinçli bir seçimdir. Ağın 5 V'a çabuk ve sağlam dönecek kadar küçük, butona basmanın onu toprağa çekerek anlamlı miktarda akım harcamayacağı kadar büyük olması gerekir: 10 kiloohm üzerinde 5 V yarım miliamperdir; karttaki hemen her şeyin yanında küçük ve gerilimi tanımlamaya yetecek kadar büyüktür. Sağdaki NOT kapısı, bırakılınca yüksek, basılınca düşük sinyali tam buton basılıyken yanan bir LED'e çevirir; bu, mantığın bir insanın beklediği gibi okunmasını sağlamanın olağan yoludur ve bir LED'i doğrudan algılama ağına bağlamanın yapacağı gibi o ağı yüklemez.
Mokxi'nin modellediği her kartta aynı direnç yerleşiktir ve yazılımla açılıp kapatılır. Uno'nun INPUT_PULLUP modu ATmega328P'nin içindeki dahili 35 kiloohm'luk bir pull-up'ı açar; ESP32-C3 ve diğer kartlar da kendi padlerinde aynı fikri sunar. Hazır button kodlarının pini basılıyken düşük okumasının nedeni budur: dahili direnç, buradaki harici direncin yaptığı işi, daha zayıf ve breadboard'da bir parça eksik olarak yapar. Yukarıdaki harici sürüm, her iki durumda da altta gerçekte olan şeydir, görünür kılınmış hâliyle.
Devam et
Bunu gerçekten kur
Düzenleyiciyi aç, bir değeri değiştir ve sayının onunla birlikte oynadığını izle. Kurulacak bir şey yok ve hesap gerekmez.