Was Sie haben, heißt Floating
Pin. Digitale Eingangsstifte reagieren sehr empfindlich auf Änderungen und nehmen, sofern sie nicht positiv in den einen oder anderen Zustand (hoch oder niedrig) getrieben werden, Streukapazität von nahe gelegenen Quellen wie Steckbrettern, menschlichen Fingern oder sogar der Luft auf. Jedes daran angeschlossene Kabel wirkt wie eine kleine Antenne und bewirkt, dass sich der Eingangszustand ändert. Und ich meine jeden Draht, die Spur auf der Platine, den Draht zum Steckbrett, den Steckbrettstift, sogar den Metallstift des IC selbst.
Dies wird auf der Arduino-Referenzseite erwähnt:
Wenn der Pin mit nichts verbunden ist, kann digitalRead () entweder HIGH oder LOW zurückgeben (und dies kann sich zufällig ändern).
Wenn Sie sich das Arduino Digital Pin Tutorial ansehen :
Dies bedeutet jedoch auch, dass Eingangsstifte, an die nichts angeschlossen ist, oder Drähte, die nicht mit anderen Schaltkreisen verbunden sind, scheinbar zufällige Änderungen des Stiftzustands melden, elektrisches Rauschen aus der Umgebung aufnehmen oder den Zustand kapazitiv koppeln eines nahe gelegenen Stiftes.
Oft ist es nützlich, einen Eingangspin in einen bekannten Zustand zu lenken, wenn kein Eingang vorhanden ist. Dies kann durch Hinzufügen eines Pullup-Widerstands (bis + 5V) oder eines Pulldown-Widerstands (Widerstand gegen Masse) am Eingang erfolgen, wobei 10K ein gemeinsamer Wert ist. Im Atmega-Chip sind außerdem praktische 20K-Pullup-Widerstände integriert, auf die über Software zugegriffen werden kann. Auf diese eingebauten Pullup-Widerstände wird auf folgende Weise zugegriffen.
pinMode(pin, INPUT); // set pin to input
digitalWrite(pin, HIGH); // turn on pullup resistors
Diese schwachen Zugwiderstände zwingen den Eingangsstiftzustand in einen bekannten Zustand und können leicht durch stärkere Eingangsspannungen wie eine direkte Verbindung mit Masse oder +5 V überschrieben werden.