Az Arduino kivezetései bemenetként (INPUT) vagy kimenetként (OUTPUT) konfigurálhatók. Ez a dokumentum elmagyarázza a kivezetések működését ezekben az üzemmódokban. Bár ennek a dokumentumnak a címe a digitális kivezetésekre utal, fontos megjegyezni, hogy az Arduino (Atmega) analóg kivezetéseinek túlnyomó többsége pontosan ugyanúgy konfigurálható és használható, mint a digitális kivezetések.
Az INPUT-ként konfigurált kivezetések tulajdonságai
Az Arduino (Atmega) kivezetései alapértelmezés szerint bemenetek, így nem szükséges őket kifejezetten bemenetként deklarálni a pinMode() segítségével, ha bemenetként használja őket. Az így konfigurált kivezetések úgynevezett nagy impedanciájú állapotban vannak. A bemeneti kivezetések rendkívül kis igényt támasztanak az általuk mintavételezett áramkörrel szemben, ami egy 100 megohmos soros ellenállásnak felel meg a kivezetés előtt. Ez azt jelenti, hogy nagyon kevés áramra van szükség ahhoz, hogy a bemeneti kivezetést egyik állapotból a másikba állítsa, és alkalmassá tegye a kivezetéseket olyan feladatokhoz, mint a kapacitív érintés-érzékelő megvalósítása, a LED-ek fotodiódaként történő olvasása vagy egy analóg érzékelő olvasása egy sémával, mint például az RCTime.
Ez azonban azt is jelenti, hogy a pinMode(pin, INPUT)-ként konfigurált kivezetések, amelyekhez semmi sem csatlakozik, vagy amelyekhez olyan vezetékek vannak csatlakoztatva, amelyek nem csatlakoznak más áramkörökhöz, látszólag véletlenszerű változásokat jeleznek a kivezetések állapotában, és elektromos zajt vesznek fel a környezet, vagy egy közeli kivezetés állapotának kapacitív csatolásából.
INPUT-ként konfigurált kivezetések felúzó ellenállásokkal
Gyakran érdemes egy bemeneti kivezetést ismert állapotba hozni, ha nincs bemenet. Ez megtehető egy felhúzó ellenállás (+5 V-hoz csatlakoztatva), vagy egy lehúzó ellenállás (a földhöz csatlakoztatva) hozzáadásával a bemeneten. Egy 10 kohmos ellenállás megfelelő érték felhúzó vagy lehúzó ellenállásnak.
INPUT_PULLUP-ként konfigurált kivezetések tulajdonságai
Az Atmega chipbe 20 kohm-os felhúzó ellenállások vannak beépítve, amelyek szoftverből érhetők el. Ezek a beépített felhúzó ellenállások a pinMode() INPUT_PULLUP beállításával érhetők el. Ez gyakorlatilag megfordítja az INPUT mód viselkedését, ahol a HIGH azt jelenti, hogy az érzékelő ki van kapcsolva, és a LOW azt, hogy be van kapcsolva.
Ennek a felhúzásnak az értéke a használt mikrokontrollertől függ. A legtöbb AVR-alapú kártyán az érték garantáltan 20kΩ és 50kΩ között van. Az Arduino Due-n ez 50kΩ és 150kΩ között van. A pontos értékért tekintse meg a mikrokontroller kártya adatlapján.
Ha egy érzékelőt egy INPUT_PULLUP-pal konfigurált kivezetéshez csatlakoztat, a másik végét a földhöz kell csatlakoztatni. Egy egyszerű kapcsoló esetén ez azt eredményezi, hogy a kivezetés HIGH állapotú, ha a kapcsoló nyitva van, és LOW állapotú, amikor a kapcsolót megnyomja.
A felhúzó ellenállások elegendő áramot biztosítanak a bemenetként konfigurált kivezetéshez csatlakoztatott LED halvány megvilágításához. Ha egy projektben a LED-ek látszólag működnek, de nagyon halványan, akkor valószínűleg ez történik.
A felhúzó ellenállásokat ugyanazok a regiszterek (belső chip-memóriahelyek) vezérlik, amelyek azt szabályozzák, hogy egy kivezetés HIGH vagy LOW legyen. Következésképpen egy olyan kivezetésnél, amely úgy van konfigurálva, hogy bekapcsolja a felhúzó ellenállásokat, amikor a kivezetés INPUT, akkor a kivezetés HIGH-ként lesz konfigurálva, ha a kivezetést ezután OUTPUT-ra kapcsolják a pinMode() segítségével. Ez a másik irányban is működik, és a HIGH állapotban hagyott kimeneti kivezetéseknél a felhúzó ellenállások be lesznek állítva, ha pinMode()-dal bemenetre állítjuk.
Az Arduino 1.0.1 előtt a belső felhúzásokat a következő módon lehetett konfigurálni: