3.9. Schalter und Pull-Widerstände¶
Ein GPIO-Ausgang steuert externe Hardware an. Ein GPIO-Eingang ist das Gegenteil: Die Kamera liest die Spannung an einem Pin und meldet sie als 0 oder 1. Das einfachste Eingabegerät ist ein Schalter – und um ihn zuverlässig lesbar zu machen, braucht es zusätzlich zum Schalter selbst ein elektronisches Bauteil.
3.9.1. Schalter und schwebende Eingänge¶
Ein Schalter ist ein mechanischer Kontakt: zwei Metallstücke, die sich berühren, wenn der Schalter geschlossen ist, und sich trennen, wenn er offen ist. Elektrisch gesehen ist das das gesamte Bauteil. Es gibt keine Spannungsquelle darin; ein Schalter allein liefert nur „verbunden“ oder „getrennt“.
Einen Schalter direkt zwischen einen GPIO-Pin und Masse zu verdrahten bedeutet, dass der Pin:
auf 0 V liegt, wenn der Schalter geschlossen ist (jetzt mit Masse verdrahtet).
schwebt, wenn der Schalter offen ist (mit nichts verdrahtet).
Ein schwebender Pin hat keine definierte Spannung. Der Eingang liest, was sich gerade in seiner Nähe befindet – Übersprechen von nahen Signalen, Rauschen von der Versorgung, sogar statische Aufladung eines Fingers nahe der Leitung. value() liefert viele Male pro Sekunde unvorhersehbare Mischungen aus 0 und 1.
3.9.2. Pull-up- und Pull-down-Widerstände¶
Die Lösung ist ein Pull-Widerstand: ein hochohmiger Widerstand (typisch sind 10 kΩ bis 100 kΩ), der den Eingang an eine bekannte Schiene bindet, wenn der Schalter offen ist.
Pull-up- (links) und Pull-down-Konfiguration (rechts) für einen Schaltereingang.¶
Pull-up. Der Widerstand bindet den Eingang an die Versorgungsschiene. Wenn der Schalter offen ist, fließt nur ein kleiner Strom durch den Widerstand, und der Pin liest High. Wenn der Schalter geschlossen ist, schließt er den Pin gegen Masse kurz; der Pin liest Low. Der Widerstand begrenzt den Strom, der sonst durch den geschlossenen Schalter von der Versorgung zur Masse fließen würde.
Pull-down. Das Spiegelbild: Der Widerstand bindet den Eingang an Masse, und der Schalter verbindet zur Versorgung. Offen liest Low, geschlossen liest High.
Pull-up ist die üblichere Konvention – „aktiv-Low“-Taster. Der MCU selbst stellt eingebaute Pull-ups und Pull-downs bereit, die sich mit Pin.PULL_UP oder Pin.PULL_DOWN aktivieren lassen, wodurch der externe Widerstand vollständig entfällt.