Мультиплексирование
Думаю, каждый сталкивался с нехваткой выводов у выбранного контроллера. Принципиальных путей решения данной проблемы ровно два: менять контроллер на более многоногий или менять схему, чтобы упихнуться в существующие ноги.
Например, классика жанра — кнопки. Когда их две-три, то проще всего повесить каждую на свою ногу, особенно если на этих ногах есть внешнее прерывание. Тогда и работать с ними одно удовольствие. А если кнопок больше десятка? Если идти по первому пути, то с кличем «больше ножек!» выбираем какой-нить TQFP64 и оккупирем два порта. У такого решения есть очевидный плюс — каждая кнопка анализируется независимо от других, поэтому возможны любые аккорды. Минусы тоже очевидны: много ног ушло почти в никуда.
Второй путь — преобразовать схему так, чтобы подсократить количество занимаемых ног. Тут простора для творчества побольше. Начиная от PC-style (отдельный контроллер, который занимается опросом клавиатуры и преобразует нажатие клавиш в удобоваримый последовательный код, хоть в 1-wire) и сдвиговых регистров (как на джойстиках Dendy) заканчивая клавиатурами на резистивных делителях, подключаемых к АЦП. Весь вопрос — в стоимости.
Варианты с матрицей клавиш уже рассматривались, сдвиговый регистр подключали, а вот клавиатура на делителях осталась как-то незаслуженно забыта. Восполним пробел.
Первое, что сразу приходит в голову — поставить цепочку резисторов и кнопками коротить их на землю. Примерно так:
Посмотрим, как оно работает.
(далее…)