Mitä ' ero INPUT ja INPUT_PULLUP välillä on?

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

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.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *