Uudemmissa Arduinoissa pinMode voidaan asettaa yhdeksi kolmesta tilasta: OUTPUT
, INPUT
ja INPUT_PULLUP
.
Tällä sivulla sanotaan:
Arduinon Atmega-sirussa on sisäiset vetovastukset (vastukset, jotka kytketään virtaan sisäisesti), joihin pääset käsiksi. Jos haluat käyttää näitä ulkoisten alasvetovastusten sijasta, voit käyttää INPUT_PULLUP-argumenttia pinMode (): ssa. Tämä kääntää tehokkaasti käyttäytymisen, jossa HIGH tarkoittaa, että anturi on pois päältä, ja LOW tarkoittaa, että anturi on päällä.
Olen melko varma, että käyttäytymisen kääntäminen ei kuitenkaan ole ainoa asia, mitä se tekee.
Mitä INPUT_PULLUP
tekee? Millä tavoin se eroaa INPUT
: stä, ja miten kukaan päättää käyttää?
Kommentit
- INPUT_PULLUP lisättiin IDE 1.0.1: llä. Ei ole merkitystä, mitä Arduino-korttia käytät, ne kaikki tukevat PULLUP-tiedostoja.
Vastaa
Oletusarvo on INPUT
, joka asettaa nastan INPUT
. Jos nasta on täysin irti, se lukee satunnaisesti HIGH
ja LOW
. Jos sidot sen + 5 V: n tai 0 V: n välille, se lukee selvästi HIGH
tai LOW
.
Arduinon sisäisessä Atmega-sirussa on sisäiset vetovastukset, joiden arvo on noin 20 000 ohmia. (Katso lisätietoja DigitalPins -dokumentaatiosta.) Nämä vastukset voidaan liittää valinnaisesti sisäisesti käyttämällä INPUT_PULLUP
. Tämä vastaa toiminnallisesti (ja sähköisesti) ~ 20 k ohmin vastuksen liittämistä nastan ja + 5 V: n välillä, ainoa ero on, että se ei vaadi ulkoisia komponentteja ja voit kytkeä sen päälle ja pois päältä ohjelmistossa ohjelman suorittamisen aikana. / p>
Miksi siis vedot eivätkä vedä alas? Sille on todennäköisesti useita syitä, mutta kun kytketään painikkeita tai kytkimiä tai jotain ”normaalisti auki”, sinun tarvitsee vain sitoa ne maahan, sinun ei tarvitse suorittaa + 5 V: n ulostuloa heille. Koska useimmat levyt tulevat olemaan Suunniteltu suurilla maadoituskaatoilla suojaussyistä joka tapauksessa, sitominen maahan on käytännössä syitä.
Joillakin esillä olevilla IC: llä, kuten ARM-siruilla, on sekä ylös- että alaslaskuja, mutta 8-bittinen AVR-linja tulee vain vetämällä Sinun on vain muistettava, että HIGH
on ”avoin” ja LOW
on suljettu.
Kommentit
- Ääni. FYI, asiakirjojen mukaan sisäiset vedonlyönnit ovat 20 kt, ei siksi, että sillä olisi paljon eroa 50 000: een nähden. arduino.cc/en/Tutorial/DigitalPins
Vastaa
Huomaa, että edellinen versioon 1.0.1, voit käynnistää vedonlyönnit käyttämällä digitalWrite()
. Ja voit silti.
Koodi:
Tämä on tärkeä ero, koska INPUT_PULLUP
käynnistää ilmeisesti vetovastuksen. Vähemmän ilmeinen on kuitenkin se, että aloittaen versiosta 1.0.1 yksinkertaisesti soittamalla INPUT
pakotetaan veto pois päältä. (Aiemmin vetäytymisen tila pysyi samana).
Jos haluat nähdä, kuinka tappi toimii vetovoimien kanssa ja ilman, katso seuraavat videot.
Kelluva tappi oskilloskoopilla: http://www.youtube.com/watch?v=dBIBFLYCjMM
Pull-Up käytössä: http://www.youtube.com/watch?v=SAIw7LLVl-U
Täydellinen opastusvideo vetovoimista (huomaa, että tein tämän ennen kuin INPUT_PULLUP lisättiin Arduino-kirjastoon): http://www.youtube.com/watch?&v=jJnD6LdGmUo
Kommentit
- Erittäin älykäs. Kiitos, että kirjoitit tämän. Myönnä ääni.