3.9. Переключатели и подтягивающие резисторы¶
GPIO-выход управляет внешним оборудованием. GPIO-вход – это противоположность: камера считывает напряжение на выводе и сообщает его как 0 или 1. Простейшее устройство ввода – это переключатель, и чтобы сделать его надёжно считываемым, нужен один элемент электроники в дополнение к самому переключателю.
3.9.1. Переключатели и плавающие входы¶
Переключатель – это механический контакт: два куска металла, которые соприкасаются, когда переключатель замкнут, и расходятся, когда он разомкнут. Электрически это всё устройство целиком. Внутри нет источника напряжения; один лишь переключатель обеспечивает только состояния «соединено» или «разъединено».
Подключение переключателя напрямую между выводом GPIO и землёй означает, что вывод:
Находится на 0 В, когда переключатель замкнут (теперь подключён к земле).
Плавает, когда переключатель разомкнут (ни к чему не подключён).
Плавающий вывод не имеет определённого напряжения. Вход считывает то, что окажется рядом с ним – перекрёстные наводки от близлежащих сигналов, шум от питания, даже статику с пальца, поднесённого близко к проводу. value() возвращает непредсказуемые смеси 0 и 1 много раз в секунду.
3.9.2. Подтягивающие к питанию и к земле резисторы¶
Решение – подтягивающий резистор: высокоомный резистор (типично от 10 кΩ до 100 кΩ), который привязывает вход к известной шине, когда переключатель разомкнут.
Конфигурации подтяжки к питанию (слева) и к земле (справа) для входа переключателя.¶
Подтяжка к питанию. Резистор привязывает вход к шине питания. Когда переключатель разомкнут, через резистор протекает лишь небольшой ток, и вывод считывается как высокий уровень. Когда переключатель замкнут, он закорачивает вывод на землю; вывод считывается как низкий уровень. Резистор ограничивает ток, который иначе тёк бы от питания к земле через замкнутый переключатель.
Подтяжка к земле. Зеркальная картина: резистор привязывает вход к земле, а переключатель подключается к питанию. Разомкнуто считывается как низкий уровень, замкнуто – как высокий.
Подтяжка к питанию – более распространённое соглашение – кнопки с «активным низким уровнем». Сам MCU предоставляет встроенные резисторы подтяжки к питанию и к земле, которые можно включить с помощью Pin.PULL_UP или Pin.PULL_DOWN, полностью устраняя внешний резистор.