Ú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
- Szavazás. FYI, a dokumentáció szerint a belső felhúzások 20K, nem mintha nagy különbség lenne az 50K-tól. arduino.cc/en/Tutorial/DigitalPins
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.