Сенсорная клавиатура для компьютера

По типу выключателей

Мембранная

Основная статья: Мембранная клавиатура

Обычно мембранная клавиатура состоит из трёх слоёв. На верхнем нанесены надписи и токопроводящие дорожки. На среднем слое отверстия в местах клавиш. На нижнем слое — токопроводящие дорожки. Когда пользователь нажимает на клавишу, он продавливает мембрану, и дорожки замыкаются.

Мембранные клавиатуры обычно имеют плохой отклик, поэтому нажатия подтверждаются миганием или звонком. Они часто используются на кухне, в медицинском оборудовании и в прочих местах, где требуется полная герметичность. Хотя плёночные клавиатуры использовались в первых компьютерах (Sinclair ZX80, БК-0010), в современных компьютерах используются более удобные резиноплёночные клавиатуры.

  • Цена: крайне низкая
  • Тактильная отдача: крайне слабая
  • Жёсткость: мягкая
  • Быстрая печать: затруднительно
  • Герметичность: да
  • Ресурс: средний
  • Шум: бесшумная
  • Толщина: 1−2 мм

Купольная

На листе тонкой жести или прочной пластмассы выдавливают клавиши. Клавиши продавливаются с характерным «щелчком», обеспечивая полную герметичность и неплохую тактильную отдачу. Применяются повсеместно в бытовой технике и медицинском оборудовании.

  • Цена: низкая
  • Тактильная отдача: хорошая
  • Жёсткость: жёсткая
  • Быстрая печать: невозможна
  • Герметичность: да
  • Ресурс: средний
  • Шум: шумна
  • Толщина: от 2 мм

Также существуют купольные клавиатуры с пластмассовыми или резинопластмассовыми толкателями; они улучшают тактильные характеристики купольных кнопок и применяются, например, в мобильных телефонах.

Резиновая

Основная статья: Резиновая клавиатураТакую клавиатуру можно свернуть в рулон.

Клавиши резиновой клавиатуры отливаются из резины (иногда приклеивается пластмассовый колпачок). Очень тихие и применяются, например, в телефонах, телевизионных пультах и игровых контроллерах. Сворачивающиеся в рулон компьютерные клавиатуры являются именно резиновыми.

Если нужно, чтобы клавиши двигались без перекосов даже при нажатии на край, используют пластмассовые толкатели в глубокой шахте. Так действуют многие современные игровые контроллеры.

  • Цена: крайне низкая
  • Тактильная отдача: посредственная
  • Жёсткость: средняя
  • Быстрая печать: затруднена
  • Герметичность: возможна
  • Ресурс: низкий
  • Шум: малошумная
  • Толщина: от 3 мм

Резиномембранная

Резиномембранная клавиатура: резинки и плёнкиУстройство ножничного механизма. Такой есть во всех ноутбучных клавиатурах.

Главный недостаток резиновой клавиатуры — для чёткого замыкания требуется сильный прижим, причём на изношенной клавиатуре этот прижим сильнее. От этого недостатка свободен гибрид резиновой и мембранной клавиатуры.

Все современные компьютерные клавиатуры, кроме самых дорогих, являются резиномембранными. Клавиша современной клавиатуры состоит из толкателя (на манер механической клавиатуры), резинки (на манер резиновой) и трёх плёнок (на манер мембранной). В настольных клавиатурах толкатель расположен в особого рода шахте и этим защищён от перекоса. В ноутбуках, где требуемая толщина клавиатуры — единицы миллиметров, клавиша двигается без перекосов с помощью ножничного механизма. Отдельные производители предлагают ножничные клавиатуры и для настольных компьютеров.

Надлежащая кривая отклика моделируется с помощью сложной формы резинки. На кривой есть три участка: 1) резинка сопротивляется, усилие среднее; 2) резинка продавлена, усилие низкое; 3) палец резинки упёрся в плёнку, клавиша нажата, усилие высокое.

Ножничные клавиатуры дороже и сложнее в разборке, чем шахтные, но и меньше загрязняются из-за узких щелей. В маркетинговых материалах принята такая классификация: резиномембранная традиционной конструкции (шахтная) — «мембранная», резиномембранная ножничная — «ножничная».

  • Цена: средняя
  • Тактильная отдача: хорошая
  • Жёсткость: средняя
  • Быстрая печать: возможна
  • Герметичность: нет
  • Ресурс: средний
  • Шум: средний
  • Толщина: около 6 мм для ножничной, от 15 мм для шахтной

Ёмкостная

На плате нанесены два проводника, на толкателе расположен третий. Эти три проводника являются, по сути, двумя последовательно соединёнными конденсаторами. Клавиатура реагирует не на замыкание, а на изменение ёмкости и потому срабатывает при неполном нажатии.

  • Цена: высокая
  • Тактильная отдача: зависит от типа возвратной пружины
  • Жёсткость: зависит от типа возвратной пружины
  • Быстрая печать: отлично
  • Герметичность: нет
  • Ресурс: высокий
  • Шум: зависит от типа возвратной пружины

Механическая

Основная статья: Механическая клавиатура«Синие» выключатели производства Cherry, применяемые в клавиатурах высокого класса

В механических клавиатурах под каждой клавишей располагается настоящий выключатель с металлической пружиной и металлическими контактами. Отклик зависит от типа выключателя — бывает как «линейный» геймерский, так и «проваливающийся» для машинисток. Современные клавиатурные выключатели далеко ушли от традиционных микропереключателей, и момент срабатывания обычно где-то в середине хода. Наиболее известная из механических клавиатур — «IBM Model M».

IBM Model M является клавиатурой с т. н. «изгибающейся пружиной» (buckling spring) (U.S. Patent 4 118 611). Механизм состоит из пружины и молоточка, который замыкает ёмкостный или плёночный выключатель. Данный тип срабатывания, несмотря на достаточно громкий щелчок, любима многими профессиональными машинистками: это единственный тип клавиатуры, где щелчок привязан к моменту срабатывания. В 1993, после того, как Lexmark откололся от IBM, «голубой гигант» передал производство клавиатур дочерней компании. В 1996 году компания Unicomp приобрела патент и продолжает заниматься продажей и ремонтом клавиатур «Model M».

  • Цена: высокая
  • Тактильная отдача: хорошая
  • Жёсткость: средняя
  • Быстрая печать: отлично
  • Герметичность: нет
  • Ресурс: высокий
  • Шум: варьируется от среднего до очень высокого
  • Толщина: от 20 мм

Магнитные клавиатуры

Используется геркон или эффект Холла.

  • Цена: очень высокая
  • Тактильная отдача: очень хорошая
  • Жёсткость: мягкая
  • Быстрая печать: возможна
  • Герметичность: да
  • Ресурс: высокий
  • Шум: высокий

Проекционная

Основная статья: Проекционная клавиатура

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

Оптическая (фотоэлектрическая) клавиатура

Разработана Харли Келхнером в 1962 году в попытке уменьшить шум от пишущей машинки. Под клавишами располагается сетка световых лучей; нажатая клавиша пересекает два луча (вертикальный и горизонтальный). На первых клавиатурах требовался специальный светозащитный корпус, а нажатие нескольких клавиш не поддерживалось (позже эти недостатки обошли). Это даёт по-настоящему герметичную клавиатуру, к тому же уменьшается объём электронной части, упрощая утилизацию. Оптическая клавиатура дешевле магнитной, и механизмы клавиш могут быть любыми, к каким привыкли машинистки — поэтому удавалось в западных компьютерах отдачу от клавиш делать такой же, как на пишущих машинках.

В необычной клавиатуре Datahand используется оптическая технология, а клавиши держатся в исходном положении магнитами. Когда пользователь преодолевает силу магнита, открывается путь лучу и нажатие регистрируется.

Фотоэлектрическая клавиатура без толкателей (палец перекрывает путь лучу) нередко используется в домофонах. «Клавиши» выгравированы на пластине, а фотоэлементы, хоть и уязвимы к вандализму, расположены в рамке вокруг, заподлицо с поверхностью, и особо не привлекают внимание хулиганов.

Механизмы в таких клавиатурах зачастую сменные — например, WASD могут быть «геймерские» линейные, а всё остальное — со щелчком, как удобно машинисткам.

  • Цена: высокая
  • Тактильная отдача: зависит от типа возвратной пружины
  • Жёсткость: зависит от типа возвратной пружины
  • Быстрая печать: отлично
  • Герметичность: возможна
  • Ресурс: высокий
  • Шум: зависит от типа возвратной пружины

Надписи

Есть несколько способов подписывания клавиш.

Краска

Самый простой способ подписать клавишу — нанести изображение краской.

  • Цена: от низкой до высокой
  • Долговечность: от низкой до средней
  • Надпись ощущается: слабо
  • Цветовая гамма: произвольная
  • Разрешающая способность: высокая (красками, не требующими покрытия, обычно ниже)
  • Печать любых надписей под заказ: реализуется отдельными производителями клавиатур

Подсвечиваемые клавиши, как правило, выполняются целиком прозрачными и оформляются вывороткой (чистый текст на закрашенном фоне).

В некоторых мобильных телефонах (Sony Ericsson Z550i) печатают краской на обратной стороне прозрачного колпачка, такая надпись не чувствуется и не изнашивается.

В современных компьютерных клавиатурах бывает два варианта:

  • сделать надпись качественной краской ультрафиолетового отверждения (чаще всего используется в дорогих ноутбуках — IBM Thinkpad, Dell Latitude).
  • сделать надпись менее качественной краской, но затем покрыть прозрачным лаком. Эта технология чаще всего используется в дешёвых клавиатурах и наименее долговечна. Внешне напоминает печать на плёнке, но это не плёнка.

Для нанесения рисунков краской используется , крайне редко — шелкография.

Иногда краску заливают в углубления на клавише, такая надпись ощущается пальцами, но и долго служит — а после стирания краски рельефная надпись всё ещё продолжает читаться. Такая технология применяется в устройствах общего доступа наподобие домофонов и таксофонов. В компьютерных клавиатурах гравировку применяют нечасто — это дороже, к тому же она плохо поддаётся чистке.

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

Лазерная гравировка

Надпись на клавише выжигается лазером.

  • Цена: высокая
  • Долговечность: долговечно
  • Надпись ощущается: ощутима
  • Цветовая гамма: один цвет, зависящий от материала клавиши, как правило, серый
  • Разрешающая способность: только линии фиксированной ширины
  • Печать любых надписей под заказ: возможна даже постфактум; в крупных городах существуют службы, способные русифицировать любой телефон или ноутбук.

Многие подсвечиваемые клавиатуры делают из полупрозрачной пластмассы с непрозрачным покрытием, на них новые надписи тоже будут подсвечиваться. Правда, возможна ситуация, когда светодиод подсветки находится, к примеру, сверху от штока, а новая надпись снизу — тогда подсветка будет слабая или вообще никакой. Клавиатурные выключатели производства Omron, применяемые в клавиатурах Logitech, встраивают светодиод прямо в шток.

Краска превращается в пар и оседает на клавише, внедряясь глубоко в пластмассу.

  • Цена: высокая
  • Долговечность: долговечно
  • Надпись ощущается: неощутима
  • Цветовая гамма: возможно цветное изображение, но только тёмный на светлом
  • Разрешающая способность: невысока, возможны ореолы вокруг надписей
  • Печать любых надписей под заказ: постфактум невозможна (нужно специальное покрытие); производители клавиатур, делающие это, неизвестны.

Двухкомпонентная отливка

Клавиша составляется из двух пластмассовых компонентов. Один из них — надпись, второй — клавиша.

  • Цена: очень высокая
  • Долговечность: не ограничена
  • Надпись ощущается: на новой клавише как правило неощутима, на старой обычно ощущается граница пластмасс
  • Цветовая гамма: один (произвольный) цвет
  • Разрешающая способность: низкая; нужны широкие штрихи и округлые шрифты
  • Печать любых надписей под заказ: невозможна; каждому языку нужна своя пресс-форма. Однако моддерские фирмы зачастую отливают клавиши с необычными рисунками.

Технология двухкомпонентной отливки доминировала в пишущих машинках и на раннем этапе развития компьютерных клавиатур в 70-80х годах, в том числе многие из недорогих компьютеров 1980-х годов (BBC Micro, Amstrad CPC) использовали именно дорогие двухкомпонентные клавиши.

Кроме дорогостоящих компьютерных клавиатур, двухкомпонентная отливка применяется в клавиатурах, подвергаемых интенсивной эксплуатации или используемых в тяжёлых условиях, например, кассовые аппараты или автомобильное оборудование, соответственно.

Иногда делают и трёхкомпонентную отливку — обычно на клавишах наподобие Num Lock, совмещённых с окошком.

Двухкомпонентные клавиши чаще делают из АБС, чем из ПБТ — последний при застывании сжимается. Но АБС склонен к износу; нанесённая на клавиши шероховатая текстура быстро стирается.

Кроме собственно двухкомпонентной отливки, иногда встречается технология составных клавиш по типу инкрустации, где в клавишу с вырезанным символом изнутри устанавливается вставка с выступающим символом, точно соответствующим вырезанному. Клавиши, выполненные по такой технологии, обычно снабжаются подсветкой, в случае белой полупрозрачной вставки может применяться цветной светофильтр. Внешне и в эксплуатации составные клавиши практически неотличимы от двухкомпонентного литья. Пример современного применения этой технологии — клавиши автомобильных кнопочных переключателей серий 375, 376, выпускающихся с 80х годов.

Наклейки

В заводских устройствах наклейки используют нечасто, обычно в детских игрушках. Зато существует немало комплектов для самостоятельной русификации компьютеров. Наклейки бывают как прозрачные, оставляющие заводские знаки, так и непрозрачные.

  • Цена: невысокая
  • Долговечность: низкая. Большинство сортов наклеек стираются и отклеиваются.
  • Надпись ощущается: да. Хорошая шероховатая текстура у наклейки бывает нечасто.
  • Цветовая гамма: произвольная
  • Разрешающая способность: высокая
  • Печать любых надписей под заказ: возможна даже постфактум, но затруднена из-за ограничений типографий.

Вкладыши

Клавиши изготавливаются из прозрачного пластика и имеют полости, в которые помещаются бумажный вкладыш с необходимыми обозначениями. В бытовых компьютерах применяется редко, например — на советском клоне ZX Spectrum — Квант-БК. Зато повсеместно встречается на POS-клавиатурах.

  • Цена: невысокая
  • Долговечность: средняя. Вкладышу под колпачком ничего не грозит, слабое место — сами механизмы колпачков.
  • Надпись ощущается: нет
  • Цветовая гамма: произвольная
  • Разрешающая способность: высокая (вкладыш можно распечатать на качественном принтере)
  • Печать любых надписей под заказ: рассчитана на самостоятельную настройку пользователем.

Кнопка-дисплей

Каждая кнопка содержит в себе небольшой OLED-дисплей, позволяющий динамически изменять обозначения на клавишах. Пример — клавиатура «Оптимус».

  • Цена: высочайшая
  • Долговечность: средняя (зависит от долговечности дисплея)
  • Надпись ощущается: нет, но приходится делать специальные механизмы клавиш
  • Цветовая гамма: произвольная (зависит от возможностей дисплея)
  • Разрешающая способность: низкая (зависит от возможностей дисплея)
  • Печать любых надписей под заказ: надписи изменяются динамически

Существует также RGB-подсветка, которая несколько дешевле (до 200 долларов) и позволяет пометить разными цветами клавиши, например, движения, управления оружием, чата.

Электроника

Современная клавиатура персональных компьютеров содержит также однокристальную микроЭВМ (микроконтроллер) и светодиоды режимов работы — Num Lock, Caps Lock, Scroll Lock и Kana (на японских клавиатурах). Процессор — обычно аналог микроконтроллера Intel 8048. На входе микропроцессора матрица клавиш, на выходе — интерфейсный провод. Тот же процессор управляет зажиганием световых индикаторов.

В IBM-совместимых компьютерах клавиши передают компьютеру так называемые скэнкоды (англ. scan code) (максимум 252 шт., зависят только от физического положения клавиши, то есть английское Q и французское A будут иметь один и тот же скэнкод). BIOS или ОС в соответствии с раскладкой клавиатуры преобразует скэнкоды в коды клавиш. Автоповтор клавиш на PS/2 реализуется повторной передачей скэнкодов нажатия, на USB — программно.

Матрица клавиш

Клавиатурные плёнки. Дорожки на них образуют матричную схему. Основная статья: Матрица (электроника)

Клавиши обычно считываются с помощью схемы, которая называется «матрица кнопок». Есть сетка проводов; на пересечениях находятся кнопки. В настоящей матрице кнопок (например, в джойстиках) последовательно с каждой кнопкой включён быстродействующий диод. В клавиатурах для удешевления диодов не ставят, поэтому одновременное нажатие трёх клавиш A1, A2 и Б1 зарегистрирует замыкание проводов Б и 2. Первые клавиатуры в таких случаях действительно регистрировали фантомное нажатие, во всех без исключения современных контроллерах есть логика защиты от подобного (однако, разумеется, перестают работать все клавиши, для которых нажатие определяется неоднозначно — в данном примере Б1). Современная клавиатура без диодов гарантирует регистрацию одновременного нажатия любых двух клавиш с любой комбинацией кнопок-модификаторов наподобие ⇧ Shift. В играх для двоих этого, разумеется, мало, в Star Control была даже утилита для экспериментирования с одновременными нажатиями. Хорошие производители клавиатур стараются делать, чтобы распространённые игровые комбинации нажимались без проблем.

В дорогих геймерских клавиатурах диоды есть, однако особенности протокола USB HID ограничивают количество одновременных нажатий шестью. Использование специализированного драйвера и подключение через PS/2 такого недостатка не имеют. При подключении через USB без специального драйвера такая клавиатура ведёт себя как обычная HID- и потому с лёгкостью «подхватывается» всеми BIOS и ОС.

Некоторые клавиатуры выдают себя за три-четыре клавиатуры. Соответственно, количество нажатых клавиш увеличивается до 18 или 24. Точно так же игровые мыши часто выдают себя за комплект «мышь+клавиатура», чтобы «нажимать» на клавиши.

В высококлассных клавиатурах применяются термины:

  • 6-key rollover (6KRO) — не конфликтуют любые шесть клавиш (максимум для USB HID).
  • N-key rollover (NKRO) — не конфликтует любая комбинация клавиш (если клавиатура для USB, она также должна выдавать себя за две и более клавиатуры).

Антидребезг

Основная статья: Дребезг контактов

При нажатии-отпускании клавиши выключатель некоторое время замыкается-размыкается. Хотя дребезг длится сотые доли секунды, этого достаточно, чтобы компьютер зарегистрировал несколько нажатий.

Технологии антидребезга обычно встраиваются в клавиатурный контроллер — после того, как клавиша нажата, она не опрашивается некоторое время, заведомо превышающее длительность переходных процессов. На первых мембранных клавиатурах (ZX81) время антидребезга было настолько большим, что мешало быстро печатать.

Емкостная клавиатура

1960 год является переломным моментом в истории развития компьютерных клавиатур – на рынок выходит электрическая печатная машинка. Она имела емкостную клавиатуру.

Емкостная клавиатура производилась на печатных текстолитовых платах. Название технологии говорит само за себя – этот тип работает за счет конденсаторов, расположенных в устройстве. Две площадки из олова и никелированной меди, которые, кстати, никак не соединены друг с другом, ни механически, ни электрически, формируют каждую клавишу. Рассмотрим, как это работает. Мы нажимаем клавишу – расстояние между площадками уменьшается, при этом изменяется электрическая емкость, которая при нажатом состоянии равна приблизительно 2 пикофарадам, а при не нажатом – 20 пикофарадам.

Уменьшение емкости создает поток заряженных частиц, который обрабатывается контроллером клавиатуры, который, в свою очередь, генерирует код нажатой клавиши. Кажется долго, но при этом такая клавиатура позволяет вводить текст со скоростью до 300 символов в секунду.

Итак, вернемся к нашей печатной машинке. Главным ее плюсом стала легкость ввода текста – теперь, чтобы печатать, не нужно было прикладывать столько усилий, как например, на классической машинке Шольза.

В 1965 году лаборатории компаний Bell и General Electric объединились, чтобы создать принципиально новый вид многопользовательской операционной системы MULTICS (Multiplexed Information and Computing Service) (http://www. multicians. org), которая впоследствии привела к появлению ОС UNIX. Главной чертой проекта стало создание нового пользовательского интерфейса – видеотерминального показа. Теперь пользователи могли видеть, какой текст они набирают, и при этом имели возможность его сходу редактировать.

Разработка сенсорной клавиатуры для своих устройств

В данной статье я опишу процесс разработки сенсорной клавиатуры, которую можно использовать в своих девайсах. Такую клавиатуру нетрудно собрать, т.к. в ней отсутствуют механические части, а отсутствие механической обратной связи компенсируется изяществом использования.
В процессе разработки одного проекта мне потребовалась удобная клавиатура на 8 кнопок. Я решил прибегнуть к известному подходу – реализовать емкостные сенсоры.
Физическую теорию я уже описал в своей статье про девайс-сувенир, которой чувствовал, когда его берут в руку (http://habrahabr.ru/blogs/DIY/111627/)
Принцип остается совершенно тем же самым, единственное отличие в реализации – используются не два вывода микроконтроллера а один.
Для начала, видео того, к чему мы будем стремиться:

Шаг 1: Схемотехника

Схемотехника сенсоров слегка изменилась, в связи с тем, что необходимо использовать только одну ногу микроконтроллера на сенсор, а не две. Впрочем, если вам не жалко лишних ног, то можно все оставить по-старому.

Порядок опроса сенсора будет слегка отличаться. Изначально на пин PD0 подан лог. 0.
Таким образом, ток течет от источника питания через мегаомный резистор и втекает в пин. Если сенсор был заряжен, то ток с него также будет стекать в пин PD0.
В момент опроса мы переключаем пин с выхода на вход (подтяжки отключены!). В этот момент, пин переходит в высокоимпедансное состояние, с сопротивлением порядка нескольких десятков(а то и сотен) МОМ. Ток в направлении пина практически прекращает течь, и начинает течь в сторону сенсора. Как только сенсор зарядится до напряжения свыше уровня лог. 1, данный вход микроконтроллера покажет единицу.
Измерив время, которое прошло с момента перевода PD0 в высокоимпедансное состояние до появления на нем лог 1, можно сделать вывод об изменении емкости сенсора, а значит, отловить момент прикосновения.
Конструктивно сенсор представляет собой прямоугольную контактную площадку 10х10 мм, но на самом деле форма его практически ничем не ограничивается, можно делать круги, змейки, делить их на сегменты и сектора — в общем ввод информации в любом виде.
Ниже представлена фотография законченной печатной платы. Плата заказная, но изготовить такую в домашних условиях также не составляет труда. При использовании макетных плат в роли сенсора может выступать кусочек фольгированного стеклотекстолита, приклеенный поверх платы.


Над каждым сенсором расположен SMD диод для индикации нажатия.
Управляется все это микроконтроллером ATMega88, заведенном на частоте 20 МГц.
Таким образом, выход с этой клавиатуры можно сделать любой, какой вам будет нужен и какой потянет мега. В моем случае был удобен SPI (я прошивал и тестил не отключая от программатора, да и в устройстве уже была задействована эта шина), но вы может использовать встроенный в мегу наравне с SPI UART, I2C, или воспользоваться программной реализацией USB от ObjDev. Да, собственно, можно и аппаратной, типа FTDI преобразователя USB->UART.
Итоговая схема (скриншот из Altium) представлена ниже.

Опять-таки, ничего сложного, ничего лишнего – мега, тактирующая ее цепь, пара сглаживающих питание кондеров, разъем для программирования/подключении, 8 диодов и 8 сенсоров.
Что интересно: расстояние, на котором сенсор может почувствовать руку зависит от разрядности таймера, его частоты, а также сопротивления, через которое подключен сенсор. Объясняется это просто – более быстрый таймер сможет засечь более мелкие интервалы времени, а при отсутствии гальванического контакта с сенсором время зарядки существенно снижается. 20 МГц меги и ее 16-разрядного таймера хватает на то чтобы уверенно обнаруживать прикосновение через слой пластика (плексигласа) около 1 мм.
Можно слегка разогнать мегу и немного увеличить сопротивление, но лучше этим не увлекаться – стабильность работы разогнанной меги не гарантируется, а слишком большое сопротивление может сравнять ток заряда с током утечки, что сделает сенсор вечно неактивным.
Как бы то ни было, нормального режима работы вполне хватит для прикрытия сенсоров тонким кусочком пластика. Идеальным бы был вариант с напылением токопроводящего покрытия на стекло, но у меня не было особой возможности поэкспериментировать в этом направлении.
Дальше нас ждет код.

Шаг 2: Код

В принципе все уже описано выше, но для некоторой ясности приведу код проекта.
#include <avr/interrupt.h> #include <avr/io.h> unsigned char KBD_STATUS=0x00, TMP_STATUS=0x00; //Текущий статус клавиатуры и переменная, куда запишем новый статус unsigned short SensorTimes={0,0,0,0,0,0,0,0}; //Времена откликов сенсоров unsigned short SensorHI={0,0,0,0,0,0,0,0}, //Для ускорения вычислений — заранее посчитанные SensorLO={0,0,0,0,0,0,0,0}; //верхний и нижний пороги void CheckSensors(); unsigned short SensToLED={8,16,32,1,4,2,1,2}; //Доп. массив, т.к. диоды висят на рандомных ногах) ISR(TIMER0_OVF_vect) { CheckSensors(); //Проверяем сенсоры for(unsigned short i=0;i<8;i++) { if(KBD_STATUS&(1<<i)==0) //Зажигаем диоды. Проект старый, сейчас я бы так не написал if(i==3||i==7) PORTB|=SensToLED; //Но править уже не буду. Куча ифов из за того что диоды else PORTC|=SensToLED; //висят на разных портах и рандомных пинах. else if(i==3||i==7) PORTB|=SensToLED; else PORTC&=~SensToLED; } } ISR(SPI_STC_vect) //Это прерывание вызывается если нас опросили по SPI { SPDR=KBD_STATUS; //Отправим им текущий статус! } void InitSPIMode3() //Настройка SPI { DDRB= 0b00010011; PORTB=0b00000011; SPCR= 0b11001100; SPSR=0x00; } void Calibrate() //Калибруем все сенсоры по очереди { unsigned char i=1,k=0; while(i!=0) { TCNT1=0x0000; TCCR1B=0x01; DDRD = ~i; while((PIND&i)==0); TCCR1B=0x00; DDRD|=i; SensorTimes=TCNT1; SensorHI=SensorTimes+70; SensorLO=SensorTimes+20; k++; i<<=1; } } void CheckSensors() //Проверяем все сенсоры по очереди { unsigned char i=1,k=0; TMP_STATUS=KBD_STATUS; TCNT1=0x0000; TCCR1B=0x01; DDRD = 0b11111110; while(i!=0) { TCNT1=0x0000; TCCR1B=0x01; DDRD = ~i; while((PIND&i)==0); TCCR1B=0x00; DDRD|=i; if(TCNT1>SensorHI) //Гистерезис, чтобы не дрыгалось при граничном значении емкости TMP_STATUS|=i; else if(TCNT1<=SensorLO) TMP_STATUS&=~i; k++; i<<=1; } KBD_STATUS=TMP_STATUS; } int main() { DDRD=0xFF; PORTD=0x00; PORTC=0xFF; DDRC=0xFF; TCCR0=0b00000101; TCNT0=0x00; TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; MCUCR=0x00; TIMSK=0x01; ACSR=0x80; SFIOR=0x00; InitSPIMode3(); for(int i=0;i<1024;i++) //Просто чтобы не калиброваться сразу как подадут питание CheckSensors(); // подрыгаем сенсорами) KBD_STATUS=0x00; TMP_STATUS=0x00; Calibrate(); //Калибруемся sei(); while(1); }