Wenn ein Taster in dieser Konfiguration angeschlossen ist, wird der Eingang als schwebend bezeichnet , was bedeutet, dass er nicht 0 oder 1 ist. Wenn der Taster gedrückt wird, ist er mit Masse verbunden, das ist also definitiv 0, aber wenn er nicht gedrückt wird, Wir kennen den Wert des Pins nicht.
Widerstand hochziehen
Wir müssen einen sogenannten "Pull-Up" -Widerstand einfügen, um das Signal auf eine logische 1 zu bringen, wenn die Taste nicht gedrückt wird.
Bild von Sparkfun
Dies bedeutet, wenn die Taste nicht gedrückt wird, liest der Arduino eine logische 1. Wenn die Taste gedrückt wird, fließt der Strom durch den Widerstand nach Masse und der Arduino liest eine logische 0.
Interner Pull-Up-Widerstand
Der Arduino verfügt auch über interne Pull-up-Widerstände, sodass Sie Ihrer Schaltung nicht unbedingt eine zusätzliche Komponente hinzufügen müssen. Es gibt verschiedene Möglichkeiten, dies zu nutzen.
Früher musstest du das so machen:
pinMode(pin, INPUT); // set pin to input
digitalWrite(pin, HIGH); // turn on pullup resistors
Jetzt können wir es einfach in einer Zeile tun:
pinMode(pin, INPUT_PULLUP);
Dadurch wird der 20k-Pullup-Widerstand an diesem Pin aktiviert. Der Eingang schwebt nicht mehr, wenn die Taste nicht gedrückt wird.
Hinweis: Dies funktioniert nur, wenn das andere Ende mit Masse verbunden ist.