Mi a ' különbség az INPUT és az INPUT_PULLUP között?

Újabb Arduinoson a PinMode-ot a három állapot egyikére állíthatjuk: OUTPUT, INPUT és INPUT_PULLUP.

Ez az oldal a következőket mondja:

Az Arduino Atmega lapkájának belső felhúzási ellenállása van (ellenállások, amelyek belső energiához csatlakoznak), amelyekhez hozzáférhet. Ha ezeket inkább külső lehúzható ellenállások helyett szeretné használni, használhatja az INPUT_PULLUP argumentumot a pinMode () fájlban. Ez gyakorlatilag megfordítja azt a viselkedést, ahol a HIGH azt jelenti, hogy az érzékelő ki van kapcsolva, a LOW pedig azt, hogy az érzékelő be van kapcsolva.

Biztos vagyok benne, hogy a viselkedés megfordítása Pedig nem ez az egyetlen dolog.

Mit csinál a INPUT_PULLUP? Mi különbözteti meg a INPUT -től, és hogyan dönti el, melyiket használja?

Megjegyzések

  • INPUT_PULLUP hozzáadva az IDE 1.0.1 verzióval. Nem releváns, hogy melyik Arduino táblát használja, ezek mind támogatják a PULLUP-okat.

Válasz

Az alapértelmezett INPUT amely a csapot INPUT néven állítja be. Ha a tű teljesen le van választva, akkor véletlenszerűen beolvassa a következőt: HIGH és LOW. Ha + 5V-ra vagy 0V-ra kapcsolja, akkor nyilván HIGH vagy LOW felirat olvasható.

Az Arduino belsejében az Atmega chip belső húzóellenállásokkal rendelkezik, 20 k ohm körüli értékkel. (További részletekért olvassa el a DigitalPins dokumentációt.) Ezek az ellenállások opcionálisan belsőleg is csatlakoztathatók a INPUT_PULLUP segítségével. Ez funkcionálisan (és elektromosan) egyenértékű azzal, hogy egy ~ 20k ohmos ellenállást csatlakoztat a tű és az + 5V közé, az egyetlen különbség az, hogy nincs szükség külső alkatrészekre, és a program végrehajtása során szoftveresen be- és kikapcsolhatja.

Miért érdemes tehát felhúzni és nem lehúzni? Ennek valószínűleg több oka is van, de amikor gombokat vagy kapcsolókat vagy bármi “normálisan nyitott” vezetéket csatlakoztat, akkor csak a földhöz kell kötnie őket, nem kell + 5 V-ot kifutniuk hozzájuk. Mivel a legtöbb táblát amúgy is árnyékolás céljából nagy földöntésekkel tervezték, a földhöz kötés gyakorlatilag ok.

Néhány olyan kiemelt IC-nél, mint az ARM chipek, felfelé és lefelé egyaránt van, de a 8 bites AVR vonal csak húzással jár -ups. Csak arra kell emlékeznie, hogy a HIGH “nyitva” van, és a LOW “bezárt”.

Megjegyzések

Válasz

Ne feledje, hogy az előző az 1.0.1-ig, a digitalWrite() használatával bekapcsolhatja a felhúzásokat. És akkor is megteheti.

A kód:

Ez azért fontos megkülönböztetés, mert a INPUT_PULLUP nyilvánvalóan bekapcsolja a felhúzós ellenállást. Kevésbé nyilvánvaló azonban, hogy az 1.0.1-től kezdve a INPUT hívása kényszeríti a felhúzás kikapcsolását. (Korábban a felhúzás állapota változatlan maradt).

Ha meg szeretné tudni, hogyan működik a tű egy felhúzással és anélkül, nézze meg a következő videókat.

Lebegő csap egy oszcilloszkópon: http://www.youtube.com/watch?v=dBIBFLYCjMM

Engedélyezett felhúzás esetén: http://www.youtube.com/watch?v=SAIw7LLVl-U

Teljes bemutató videó a felhúzásokról (vegye figyelembe, hogy ezt az INPUT_PULLUP hozzáadása előtt készítettem az Arduino könyvtárba): http://www.youtube.com/watch?&v=jJnD6LdGmUo

Megjegyzések

  • Nagyon okos. Köszönöm, hogy megírta ezt. Szavazás.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük