3.9. Kytkimet ja vetovastukset

GPIO-lähtö ohjaa ulkoista laitteistoa. GPIO-tulo on päinvastainen: kamera lukee nastan jännitteen ja raportoi sen arvona 0 tai 1. Yksinkertaisin tulolaite on kytkin – ja sen tekeminen luotettavasti luettavaksi vaatii yhden elektroniikkakomponentin itse kytkimen lisäksi.

3.9.1. Kytkimet ja kelluvat tulot

Kytkin on mekaaninen kosketin: kaksi metallikappaletta, jotka koskettavat toisiaan kytkimen ollessa kiinni ja erkanevat sen ollessa auki. Sähköisesti tämä on koko laite. Sisällä ei ole jännitelähdettä; kytkin yksinään tarjoaa vain tilan ”kytketty” tai ”ei kytketty”.

Kytkimen johdottaminen suoraan GPIO-nastan ja maan väliin tarkoittaa, että nasta on:

  • 0 V:ssä, kun kytkin on kiinni (nyt johdotettu maahan).

  • Kelluva, kun kytkin on auki (johdotettu ei mihinkään).

Kelluvalla nastalla ei ole määriteltyä jännitettä. Tulo lukee mitä tahansa sen lähellä sattuu olemaan – ylikuulumista läheisistä signaaleista, kohinaa syötöstä, jopa staattista sähköä johdon lähellä olevasta sormesta. value() palauttaa ennustamattomia sekoituksia arvoista 0 ja 1 monta kertaa sekunnissa.

3.9.2. Ylös- ja alasvetovastukset

Korjaus on vetovastus: suuriarvoinen vastus (10 kΩ:sta 100 kΩ:iin on tyypillistä), joka sitoo tulon tunnettuun kiskoon, kun kytkin on auki.

Two circuit diagrams side by side. Left: a pull-up circuit with a resistor from the input pin up to the supply and a switch from the input pin down to GND. Right: a pull-down circuit with a resistor from the input pin down to GND and a switch from the input pin up to the supply.

Ylösveto- (vasen) ja alasvetokokoonpanot (oikea) kytkimen tulolle.

  • Ylösveto. Vastus sitoo tulon syöttökiskoon. Kun kytkin on auki, vastuksen läpi kulkee vain pieni virta ja nasta lukee korkean. Kun kytkin on kiinni, se oikosulkee nastan maahan; nasta lukee matalan. Vastus rajoittaa virtaa, joka muutoin virtaisi syötöstä maahan suljetun kytkimen läpi.

  • Alasveto. Peilikuva: vastus sitoo tulon maahan, ja kytkin kytkeytyy syöttöön. Auki lukee matalan, kiinni lukee korkean.

Ylösveto on yleisempi käytäntö – ”aktiivinen matala” -painikkeet. MCU itse tarjoaa sisäänrakennetut ylös- ja alasvetovastukset, jotka voidaan ottaa käyttöön asetuksella Pin.PULL_UP tai Pin.PULL_DOWN, jolloin ulkoinen vastus jää kokonaan pois.