3.9. Kapcsolók és felhúzó ellenállások

A GPIO kimenet külső hardvert vezérel. A GPIO bemenet ennek az ellentéte: a kamera beolvassa a lábon lévő feszültséget, és 0 vagy 1 értékként jelenti. A legegyszerűbb bemeneti eszköz egy kapcsoló – és ahhoz, hogy megbízhatóan olvasható legyen, magán a kapcsolón felül egy elektronikai elemre van szükség.

3.9.1. Kapcsolók és lebegő bemenetek

A kapcsoló egy mechanikus érintkező: két fémdarab, amelyek érintkeznek, amikor a kapcsoló zárt, és szétválnak, amikor nyitott. Elektromosan ennyi az egész eszköz. Nincs benne feszültségforrás; egy kapcsoló önmagában csak „összekötött” vagy „szétkapcsolt” állapotot ad.

Ha egy kapcsolót közvetlenül egy GPIO láb és a föld közé kötünk, a láb:

  • 0 V-on van, amikor a kapcsoló zárt (most a földre van kötve).

  • Lebeg, amikor a kapcsoló nyitott (semmihez sincs kötve).

Egy lebegő lábnak nincs meghatározott feszültsége. A bemenet azt olvassa, ami éppen a közelében van – áthallás a közeli jelekből, zaj a tápellátásból, sőt akár statikus elektromosság egy ujjról, amely közel van a vezetékhez. A value() másodpercenként sokszor a 0 és 1 kiszámíthatatlan keverékét adja vissza.

3.9.2. Felhúzó és lehúzó ellenállások

A megoldás egy felhúzó vagy lehúzó ellenállás: egy nagy értékű ellenállás (jellemzően 10 kΩ-tól 100 kΩ-ig), amely egy ismert sínhez köti a bemenetet, amikor a kapcsoló nyitott.

Két áramköri rajz egymás mellett. Bal oldalon: egy felhúzó áramkör egy ellenállással a bemeneti lábtól felfelé a tápellátáshoz, és egy kapcsolóval a bemeneti lábtól lefelé a GND-hez. Jobb oldalon: egy lehúzó áramkör egy ellenállással a bemeneti lábtól lefelé a GND-hez, és egy kapcsolóval a bemeneti lábtól felfelé a tápellátáshoz.

Felhúzó (bal) és lehúzó (jobb) elrendezések egy kapcsoló bemenethez.

  • Felhúzó. Az ellenállás a táp sínhez köti a bemenetet. Amikor a kapcsoló nyitott, csak egy kis áram csordogál át az ellenálláson, és a láb magas szintet olvas. Amikor a kapcsoló zár, rövidre zárja a lábat a földre; a láb alacsony szintet olvas. Az ellenállás korlátozza azt az áramot, amely egyébként a tápellátásból a földre folyna a zárt kapcsolón keresztül.

  • Lehúzó. A tükörkép: az ellenállás a földhöz köti a bemenetet, a kapcsoló pedig a tápellátáshoz csatlakozik. Nyitott állapotban alacsonyat, zárt állapotban magasat olvas.

A felhúzó a gyakoribb megoldás – „aktív alacsony” gombok. Maga az MCU beépített felhúzó és lehúzó ellenállásokat biztosít, amelyek a Pin.PULL_UP vagy Pin.PULL_DOWN segítségével engedélyezhetők, teljesen kiküszöbölve a külső ellenállást.