Sim, parece uma boa ideia, mas, de qualquer forma, vou propor uma alternativa que me veio à mente.
Se você tiver acesso às portas lógicas, poderá mapear muitos n
botões para ceil(log2(n + 1))
pinos através da lógica booleana. Por exemplo, se você tiver 4 botões, mas apenas 2 pinos, poderá criar uma configuração como esta:
Buttons | Pins
---- | --
0123 | 01
---- | --
0001 | 00
0010 | 01
0100 | 10
1000 | 11
Ou seja, button0
pressionado deve ter pin0
e pin1
baixo; button1
, pin0
baixo e pin1
alto; button2
, pin0
alto e pin1
baixo; e button3
, pin0
e pin1
alta.
A partir disso, as seguintes expressões booleanas surgiriam
pin0 = button2 OR button3
pin1 = button1 OR button3
Um mapeamento de 4 botões para 2 pinos poderia, portanto, ser realizado com apenas 2 portas OR. Você precisaria de um pino adicional e alguma lógica adicional para indicar se algum botão está sendo pressionado.
Obviamente, ainda haverá problemas se vários botões forem pressionados simultaneamente.
Além disso, se você ainda seguir a abordagem do resistor, considere o uso de valores maiores nos resistores que não sejam 100 ohms, já que 5 V através de resistores da ordem de 100s de ohms produziriam uma corrente da ordem de 10s de mA, que é do tipo desnecessariamente alto. Eu acho que valores mais razoáveis seriam 10k Ohm ou 47k Ohm.