Да, это кажется хорошей идеей, но в любом случае я собираюсь предложить альтернативу, которая только что пришла мне в голову.
Если у вас есть доступ к логическим элементам, вы можете отобразить множество n
кнопок на ceil(log2(n + 1))
контакты с помощью логической логики. Например, если у вас есть 4 кнопки, но только 2 контакта, вы можете создать такую конфигурацию:
Buttons | Pins
---- | --
0123 | 01
---- | --
0001 | 00
0010 | 01
0100 | 10
1000 | 11
То есть, button0
нажатие должно иметь pin0
и pin1
низкий; button1
, pin0
Низкой и pin1
высокой; button2
, pin0
Высокая pin1
низка; и button3
, pin0
и pin1
высоко.
Отсюда вытекают следующие логические выражения
pin0 = button2 OR button3
pin1 = button1 OR button3
Таким образом, отображение 4 кнопок на 2 контакта может быть реализовано только с двумя вентилями ИЛИ. Тем не менее, вам понадобится дополнительный вывод и некоторая дополнительная логика для указания, нажимается ли какая-либо кнопка вообще.
Конечно, все равно будут проблемы, если одновременно нажимать несколько кнопок.
Кроме того, если вы все еще будете придерживаться подхода с использованием резисторов, рассмотрите возможность использования на резисторах больших значений, кроме 100 Ом, так как 5 В через резисторы порядка 100 сОм дадут ток порядка 10 с мА, что является своего рода излишне высокого. Я предполагаю, что более разумные значения были бы 10 кОм или 47 кОм.