Можно использовать резистивные контактные площадки, как показано на рисунке, но емкостные контактные площадки, как правило, лучше. Резистивные площадки оставляют прямое соединение с цепью открытым снаружи. Поэтому они подвержены повреждениям от статического разряда и шума.
Емкостные колодки являются лучшим методом, хотя для их определения требуется немного больше встроенного программного обеспечения, по крайней мере, если вы хотите сделать это хорошо. Обратите внимание, что для получения даже элементарной помехоустойчивости резистивным колодкам также требуется прошивка. Просто подключить две колодки к чему-то чувствительному, например, к воротам FET, - плохая идея. Вы не сможете отменить общий режим и другие окружающие шумы.
Вот схема небольшой платы, которую я недавно сделал для исследования емкостных кнопок:
Накладки представляют собой небольшие диски диаметром 150 мм (3,8 мм) и в остальном окружены грунтом в верхнем слое. Микроконтроллер представляет собой PIC 16LF1786. Он и все остальные части, которые не предназначены для непосредственного взаимодействия с пользователем, установлены на нижней части этой двухслойной платы.
ПИК постоянно сканирует колодки. Когда он обнаруживает изменение в состоянии нажатия / отпускания пэда, он отправляет сообщение через последовательный порт, обновляет индикаторы в правом верхнем углу и издает звуковой сигнал при нажатии.
Для тестирования я могу регулярно посылать PIC свои внутренние значения для нажатия каждой площадки. Вот график всех пяти необработанных значений смысла, в дополнение к общему цифровому состоянию «что-то нажимается», когда я последовательно нажимал каждую площадку пальцем:
Как видите, помехоустойчивость исключительная. Даже самый слабый сигнал был более 300, а шум был ± 2 или около того.
Пурпурный след, помеченный «Нажатие», показывает ИЛИ состояний отдельных нажатых кнопок. Его уровни показывают пороги прессы и выпуска. Существует много дополнительных сигналов, которые не используются в этом случае. Эти конкретные пороговые значения были изменены, чтобы выдержать несколько слоев бумаги над кнопками.
Конечно, есть некоторая умная обработка строк кнопок и их обработка, даже если я сам так говорю, но ясно, что результаты достижимы с довольно скромным микроконтроллером.
Я использую это в реальном продукте, где тот же микро также управляет отображением персонажа. Это базовая подсистема пользовательского интерфейса, которую я планирую использовать в нескольких будущих продуктах. Он взаимодействует с главным системным контроллером через последовательный порт. Главный контроллер отправляет команды для записи на дисплей и принимает асинхронные сообщения всякий раз, когда изменяется состояние кнопки.