3.9. Przełączniki i rezystory podciągające¶
Wyjście GPIO steruje zewnętrznym sprzętem. Wejście GPIO jest odwrotnością: kamera odczytuje napięcie na pinie i zgłasza je jako 0 lub 1. Najprostszym urządzeniem wejściowym jest przełącznik – a uczynienie go niezawodnie odczytywalnym wymaga jednego elementu elektronicznego oprócz samego przełącznika.
3.9.1. Przełączniki i wejścia w stanie nieustalonym¶
Przełącznik to mechaniczny styk: dwa kawałki metalu, które stykają się, gdy przełącznik jest zamknięty, i rozdzielają, gdy jest otwarty. Elektrycznie jest to całe urządzenie. Wewnątrz nie ma źródła napięcia; sam przełącznik zapewnia jedynie stan „połączony” lub „rozłączony”.
Podłączenie przełącznika bezpośrednio między pinem GPIO a masą oznacza, że pin jest:
Na 0 V, gdy przełącznik jest zamknięty (teraz połączony z masą).
W stanie nieustalonym (floating), gdy przełącznik jest otwarty (połączony z niczym).
Pin w stanie nieustalonym nie ma zdefiniowanego napięcia. Wejście odczytuje cokolwiek akurat znajduje się w jego pobliżu – przesłuch z pobliskich sygnałów, szum z zasilania, a nawet ładunki statyczne z palca trzymanego blisko przewodu. value() zwraca nieprzewidywalne mieszanki 0 i 1 wiele razy na sekundę.
3.9.2. Rezystory podciągające i ściągające¶
Rozwiązaniem jest rezystor podciągający: rezystor o dużej wartości (typowo od 10 kΩ do 100 kΩ), który wiąże wejście ze znaną szyną, gdy przełącznik jest otwarty.
Konfiguracje podciągająca (po lewej) i ściągająca (po prawej) dla wejścia przełącznika.¶
Podciąganie. Rezystor wiąże wejście z szyną zasilania. Gdy przełącznik jest otwarty, przez rezystor płynie tylko niewielki prąd i pin odczytuje stan wysoki. Gdy przełącznik jest zamknięty, zwiera pin do masy; pin odczytuje stan niski. Rezystor ogranicza prąd, który w przeciwnym razie płynąłby z zasilania do masy przez zamknięty przełącznik.
Ściąganie. Lustrzane odbicie: rezystor wiąże wejście z masą, a przełącznik łączy się z zasilaniem. Otwarty odczytuje stan niski, zamknięty stan wysoki.
Podciąganie jest częstszą konwencją – przyciski „aktywne w stanie niskim”. Sam MCU zapewnia wbudowane rezystory podciągające i ściągające, które można włączyć za pomocą Pin.PULL_UP lub Pin.PULL_DOWN, eliminując zewnętrzny rezystor całkowicie.