Wanneer een knop in die configuratie is aangesloten, is de invoer wat zwevend wordt genoemd, wat betekent dat het geen 0 of een 1 is. Wanneer de knop wordt ingedrukt, is deze verbonden met aarde, dus dat is zeker een 0, maar als deze niet is ingedrukt, weten we de waarde van de pin niet.
Pull Up Resistor
We moeten een zogenaamde "pull-up" toevoegen weerstand om het signaal naar een logische 1 te trekken wanneer de knop niet wordt ingedrukt.
Afbeelding van Sparkfun
Wat dit betekent is dat wanneer de knop niet wordt ingedrukt, de Arduino een logische 1 leest. Wanneer de knop wordt ingedrukt, loopt de stroom door de weerstand naar aarde en leest de Arduino een logische 0.
Interne trekkracht Up Resistor
De Arduino heeft ook interne pull-up weerstanden zodat je niet per se een extra component aan je schakeling hoeft toe te voegen. Er zijn een aantal manieren om dit te gebruiken.
Vroeger moest je het zo doen:
pinMode (pin, INPUT); // stel pin in op inputdigitalWrite (pin, HIGH); // zet pullup-weerstanden aan
Nu kunnen we het eenvoudig op één regel doen:
pinMode (pin, INPUT_PULLUP);
Hierdoor wordt de 20k pull-up weerstand op die pin ingeschakeld. De invoer zal niet langer zweven als de knop niet wordt ingedrukt.
Opmerking: dit werkt alleen als het andere uiteinde is verbonden met aarde.