Программа Сервисный Центр
0

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


О том, как, используя технологию чарлиплексирования, управлять максимальным числом светодиодов с помощью минимального числа линий ввода-вывода, рассказывалось во множестве статей [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 светодиодами и таким же количеством кнопок.

 
 
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.
 
Обратная связь

Наши партнеры

 

Опросы

Есть ли справедливость в жизни?
Конечно есть, уверен!
Вроде как должна быть, но...
Затрудняюсь ответить...
Какая справедливость? О чем Вы?
Эх.., нет правды на свете!

 

Облако тегов

Требуется для просмотраFlash Player 9 или выше.

Показать все теги
 

Календарь публикаций

«    Июнь 2017    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
 

Архив новостей

Июнь 2017 (31)
Май 2017 (45)
Апрель 2017 (47)
Март 2017 (53)
Февраль 2017 (50)
Январь 2017 (42)
 
Наверх Сервисные мануалы Даташиты Ремонт LCD, ЖК телевизоров LG Samsung Скрипт программы "Сервисный центр"