3.9. Переключатели и подтягивающие резисторы

GPIO-выход управляет внешним оборудованием. GPIO-вход – это противоположность: камера считывает напряжение на выводе и сообщает его как 0 или 1. Простейшее устройство ввода – это переключатель, и чтобы сделать его надёжно считываемым, нужен один элемент электроники в дополнение к самому переключателю.

3.9.1. Переключатели и плавающие входы

Переключатель – это механический контакт: два куска металла, которые соприкасаются, когда переключатель замкнут, и расходятся, когда он разомкнут. Электрически это всё устройство целиком. Внутри нет источника напряжения; один лишь переключатель обеспечивает только состояния «соединено» или «разъединено».

Подключение переключателя напрямую между выводом GPIO и землёй означает, что вывод:

  • Находится на 0 В, когда переключатель замкнут (теперь подключён к земле).

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

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

3.9.2. Подтягивающие к питанию и к земле резисторы

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

Две схемы рядом друг с другом. Слева: схема подтяжки к питанию с резистором от входного вывода вверх к питанию и переключателем от входного вывода вниз к GND. Справа: схема подтяжки к земле с резистором от входного вывода вниз к GND и переключателем от входного вывода вверх к питанию.

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

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

  • Подтяжка к земле. Зеркальная картина: резистор привязывает вход к земле, а переключатель подключается к питанию. Разомкнуто считывается как низкий уровень, замкнуто – как высокий.

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