Jedna metoda, którą zastosowałem, wykorzystuje pojemnościowy charakter wejść CMOS.
symulacja tego obwodu - Schemat utworzony za pomocą CircuitLab
W obwodzie nad przełącznikiem, gdy jest zamknięty, umożliwia opornikowi obniżającemu ładowanie / rozładowywanie pojemności wejściowych GPIO do poziomu gruntu.
Sztuką tego obwodu jest wykorzystanie dwukierunkowego charakteru GPIO, aby utrzymać ładunek wejściowy na wysokim poziomie logicznym, gdy przełącznik jest otwarty.
Procedura kontrolna okresowo wyłącza sworzeń jako wysoki poziom lub na krótko umożliwia podciąganie, na tyle długo, aby utrzymać ładunek w czapkach. Pin wejściowy działa wtedy jak dynamiczny bit pamięci i, w przypadku większości urządzeń, utrzymuje ten ładunek przez znaczny i użyteczny okres czasu.
Po prawidłowym skonfigurowaniu, jeśli przycisk zostanie naciśnięty, ładunek na pinie rozładuje się szybciej niż częstotliwość odświeżania. Ten warunek można następnie wykryć jako część algorytmu odświeżania jako odczyt przed operacją odświeżania lub użyć do sterowania przerwaniem.
Moc jest krótko wykorzystywana podczas impulsu odświeżania, zarówno do ładowania kondensatorów, jak i przez rezystor i przełącznik, jeśli jest zamknięty. Jednak długość impulsu odświeżania jest krótka, a częstotliwość odpytywania powoduje, że prąd odświeżania jest stosunkowo niewielki.
Oczywiście ta metoda jest aktywna. Jeśli mikro zostanie uśpione, stan przełącznika będzie nieokreślony po przebudzeniu. Pierwszy cykl odświeżania po wybudzeniu musi zignorować odczyt PIN. Ponadto tej metody nie należy używać do budzenia mikro. Przed pójściem spać dobrze jest włączyć pin jako niską moc wyjściową, aby zaparkować go w stanie zerowego prądu.
Do odczytu większej liczby przełączników statycznych, takich jak konfiguracyjne przełączniki DIP, można użyć dedykowanej procedury zamiast ciągłego cyklu odświeżania. Po odczycie piny GPIO powinny być następnie „zaparkowane” w aktywnym niskim stanie wyjściowym (zerowy prąd), aby uniknąć problemu ze zmiennymi wejściami.
UWAGA: Ta technika nieco cierpi z powodu wrażliwości na hałas, jeśli długości ścieżek są długie i przechodzą przez hałaśliwy obszar. Jako taki R1 powinien znajdować się blisko styku wejściowego. Jednak nie polecałbym go do podłączenia przełącznika w pewnej odległości na panelu przednim, chyba że dodasz dodatkową pojemność w pobliżu styku.