Источники питания Keen Side

Три вывода, три светодиода, три кнопки

Журнал РАДИОЛОЦМАН, июль 2016

Francois Auger, Philippe Fretaud

EDN

О том, как, используя технологию чарлиплексирования, управлять максимальным числом светодиодов с помощью минимального числа линий ввода-вывода, рассказывалось во множестве статей [1, 2, 3]. Здесь мы покажем, каким образом можно управлять тремя светодиодами и сканировать три кнопки с помощью всего трех линий ввода-вывода вместо шести. Используя этот же принцип, можно также управлять четырьмя кнопками и двумя светодиодами или пятью светодиодами и одной кнопкой. Схема хорошо работает с микроконтроллерами ATmega фирмы Atmel, включая Arduino, и может представлять особый интерес для любых восьмивыводных устройств, или тогда, когда вы вышли из бюджета линий ввода/вывода.

Как это сделать, показывает схема на Рисунке 1. Принцип управления каждым из трех светодиодов одинаков, и также одинаковы способы сканирования трех кнопок. Поэтому рассмотрим только, каким образом управляется светодиод L0, и как считывается состояние кнопки B0. Для управления светодиодом L0 порты P0 и P2 должны быть сконфигурированы выходами. В порт P2 надо записать «0», а в P0 – «1», чтобы зажечь светодиод, или «0», чтобы погасить. Для того чтобы включался только один светодиод L0, порт P1 надо настроить на ввод. Диод D2 предохраняет от короткого замыкания в ситуации, когда кнопка B2 замыкается при включенном светодиоде L0.

Три вывода, три светодиода, три кнопки
Рисунок 1.

Для считывания состояния кнопки B0 необходимо сконфигурировать порт P1 на вывод и записать в него «0». P0 настраивается на ввод, и при этом подключается внутренний резистор подтяжки 20 кОм (входные выводы с коммутируемыми нагрузочными резисторами есть во всех микроконтроллерах ATmega и в нескольких других моделях). Благодаря этому подтягивающему резистору при разомкнутой кнопке на выводе P0 будет высокий логический уровень. При нажатой кнопке напряжение на P0 приблизительно равно

что можно считать низким логическим уровнем.

Для того чтобы выключить светодиод L0, порт P2 надо настроить на ввод (высокоимпедансное состояние). Диод D0 предохраняет от короткого замыкания в ситуации, когда светодиод L1 включается при замкнутой кнопке B0.

Листинг, который можно загрузить по ссылке в конце статьи, представляет небольшую программу для Arduino, показывающую, как можно последовательно мигать тремя светодиодами, и включать один светодиод, когда нажата соответствующая кнопка.

Разумеется, схему можно обобщить на любое количество линий. При четырех линиях ввода/вывода появится возможность управлять шестью светодиодами и шестью кнопками. При N линиях можно управлять N × (N – 1)/2 светодиодами и таким же количеством кнопок.

Загрузки

Ссылки

Перевод: AlexAAN по заказу РадиоЛоцман

На английском языке: 3 pins, 3 LEDs, 3 buttons

ТМ Электроникс. Электронные компоненты и приборы. Скидки, кэшбэк и бесплатная доставка
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя