Sí, parece una buena idea, pero de todos modos voy a proponer una alternativa que se me ocurrió.
Si tiene acceso a puertas lógicas, puede asignar muchos n
botones a ceil(log2(n + 1))
pines a través de la lógica booleana. Como ejemplo, si tiene 4 botones, pero solo 2 pines, puede crear una configuración como esta:
Buttons | Pins
---- | --
0123 | 01
---- | --
0001 | 00
0010 | 01
0100 | 10
1000 | 11
Es decir, button0
presionado debe tener pin0
y pin1
bajo; button1
, pin0
bajo y pin1
alto; button2
, pin0
alto y pin1
bajo; y button3
, pin0
y pin1
alto.
De esto surgirían las siguientes expresiones booleanas
pin0 = button2 OR button3
pin1 = button1 OR button3
De este modo, se podría realizar una asignación de 4 botones a 2 pines con solo 2 compuertas OR. Sin embargo, necesitaría un pin adicional y algo de lógica adicional para indicar si se está presionando algún botón.
Por supuesto, aún habrá problemas si se presionan varios botones simultáneamente.
Además, si aún seguirá con el enfoque de resistencia, considere usar valores más grandes en las resistencias que no sean 100 ohmios, ya que 5 V a través de resistencias del orden de 100s de ohmios producirían una corriente del orden de 10s de mA, que es amable de innecesariamente alto. Supongo que valores más razonables serían 10k Ohm o 47k Ohm.