Один із застосованих нами методів використовує ємнісний характер входів CMOS.
імітувати цю схему - Схематично створено за допомогою CircuitLab
У ланцюзі над вимикачем, коли він закритий, дозволяє висувний резистор заряджати / розряджати вхідні ємності GPIO до рівня землі.
Хитрість цієї схеми полягає у використанні двонаправленого характеру GPIO, щоб підтримувати вхід заряджений до логічно високого рівня, коли комутатор відкритий.
Контроль розповсюдження періодично повертає штифт як високий рівень або на короткий час дозволяє підтягувати, досить довго, щоб підтримувати заряд кришки. Потім вхідний контакт працює як біт динамічної пам’яті і, як і більшість пристроїв, утримуватиме цей заряд протягом значної та корисної кількості часу.
Якщо правильно налаштовано, якщо натиснути кнопку, заряд на штифті розрядиться швидше, ніж швидкість оновлення. Потім ця умова може бути виявлена як частина алгоритму оновлення як зчитування перед операцією оновлення або використана для наведення переривання.
Живлення коротко використовується під час імпульсу оновлення, як для підзарядки конденсаторів, так і через резистор та комутатор, якщо він закритий. Однак довжина імпульсу оновлення невелика, а частота опитування призводить до того, що струм оновлення є відносно незначним.
Очевидно, що цей метод є активним. Якщо мікрофон буде увімкнути, стан вимикача буде невизначеним при пробудженні. Перший цикл оновлення після пробудження повинен ігнорувати прочитане на штифті. Також цей метод не слід застосовувати для пробудження мікро. Перед сном також розумно включити штифт як низький вихід, щоб припаркувати його до нульового поточного стану.
Для зчитування більше статичних перемикачів, як-от налаштування занурень-перемикачів, може використовуватися спеціальна програма, а не безперервний цикл оновлення. Після зчитування штифти GPIO повинні бути «припарковані» в активному низькому вихідному стані (нульовий струм), щоб уникнути проблеми з плаваючими входами.
ПРИМІТКА. Ця методика трохи страждає від чутливості до шуму, якщо довжина слідів довга і проходить через шумну область. Як така R1 повинна бути близькою до вхідного штифта. Однак я б не рекомендував його підключати комутатор на деякій відстані на передній панелі десь, якщо ви не додасте додаткову ємність, близьку до штифта.