
Az egyik korai fejezet az Arduino kézikönyvekben biztosan a DigitalRead() utasítást járja körbe. A tanuláshoz ez biztosan szükséges. Ugyanakkor a könyvek és folyóiratok, ebook-ok nagyrésze eléggé lazán kezeli a problémát.
A DigitalRead() legegyszerűbb modellezése egy kapcsolóval lehetséges:

A leírásokban és a rajzon is az látszik, hogy ott a belső felhúzó-ellenállás – amit kódszinten használunk is:
void setup() {
pinMode(buttonPin, INPUT);
digitalWrite(buttonPin,HIGH);
}
A kapcsoló a kivezetés és a GND közé került, és a setup() részen bekapcsoljuk a belső felhúzó-ellenállást a digitalWrite() utasítással (Igen, a bemeneti lábra történik meg a kiírás).
De miért nem jó ez a megoldás?
Mert a belső felhúzó ellenállás értéke kb. 20 kOhm. És ha hosszú vezetékkel csatlakozik a kapcsoló, mindenféle parazita jeleket képes a vezeték (mint antenna) összeszedni. Az AVR chipek új generációja, melyre az “A” végződés utal (pl. ATMega-8A), illetve a picopower technológia chipjei (pl. ATMega-328P) belső felhúzó-ellenállása 80…120 kOhmos! Azaz még érzékenyebb lesz a bemenet.
A megoldás az, hogy minden esetben külső felhúzó-ellenállást használunk. Ettől persze a belső is még használható.

A programkódjaink a külső ellenállás esetén változatlanok maradhatnak.
Kapcsolódó oldal:
Mintakódok a digitális bemenet teszteléshez:
Arduino keret-rendszerben: Fájl → Minták → 02.Digital