3.9. Перемикачі та підтягуючі резистори

GPIO-вихід керує зовнішнім обладнанням. GPIO-вхід – протилежне: камера зчитує напругу на виводі та повідомляє її як 0 або 1. Найпростішим пристроєм введення є перемикач – і для надійного читання потрібен один електронний компонент на додаток до самого перемикача.

3.9.1. Перемикачі та «висячі» входи

Перемикач – це механічний контакт: два шматки металу, що торкаються, коли перемикач замкнутий, і розходяться, коли він розімкнутий. Електрично – це весь пристрій. Усередині немає джерела напруги; перемикач сам по собі забезпечує лише «з’єднано» або «роз’єднано».

Підключення перемикача безпосередньо між GPIO-виводом та землею означає, що вивід:

  • На рівні 0 В, коли перемикач замкнутий (тепер підключений до землі).

  • Висить у повітрі, коли перемикач розімкнутий (ні до чого не підключений).

«Висячий» вивід не має визначеної напруги. Вхід зчитує все, що трапляється поблизу, – перехідні завади від сусідніх сигналів, шум живлення, навіть статичний заряд від пальця поблизу дроту. value() повертає непередбачувану суміш 0 і 1 багато разів на секунду.

3.9.2. Підтягуючі та підтискаючі резистори

Рішення – підтягуючий резистор: резистор з великим номіналом (зазвичай від 10 кОм до 100 кОм), який утримує вхід на відомому рівні, коли перемикач розімкнутий.

Two circuit diagrams side by side. Left: a pull-up circuit with a resistor from the input pin up to the supply and a switch from the input pin down to GND. Right: a pull-down circuit with a resistor from the input pin down to GND and a switch from the input pin up to the supply.

Конфігурації з підтяжкою (ліворуч) та зі спуском (праворуч) для входу перемикача.

  • Підтяжка. Резистор утримує вхід на рівні шини живлення. Коли перемикач розімкнутий, через резистор протікає лише невеликий струм, і вивід читається як HIGH. Коли перемикач замкнутий, він коротить вивід на землю; вивід читається як LOW. Резистор обмежує струм, який інакше протікав би від живлення до землі через замкнутий перемикач.

  • Спуск. Дзеркальне відображення: резистор утримує вхід на рівні землі, а перемикач підключений до живлення. Розімкнутий – LOW, замкнутий – HIGH.

Підтяжка є більш поширеною угодою – кнопки «активний LOW». Сам мікроконтролер надає вбудовані підтягуючі та підтискаючі резистори, які можна ввімкнути за допомогою Pin.PULL_UP або Pin.PULL_DOWN, повністю усуваючи зовнішній резистор.