Sí, me parece una buena idea, pero de todos modos voy a proponer una alternativa que se me ha ocurrido.
Si tiene acceso a puertas lógicas, puede asignar muchos botones n
a ceil(log2(n + 1))
pins 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 debería tener pin0
y pin1
bajo; button1
, pin0
low y pin1
high; button2
, pin0
high y pin1
low; y button3
, pin0
y pin1
high.
De esto surgirían las siguientes expresiones booleanas
pin0 = button2 OR button3
pin1 = button1 OR button3
Por lo tanto, se podría realizar una asignación de 4 botones a 2 pines con solo 2 O puertas. Sin embargo, necesitarías un pin adicional y un poco de lógica adicional para indicar si se está presionando algún botón.
Por supuesto, todavía habrá problemas si se presionan varios botones simultáneamente.
Además, si sigue utilizando el enfoque de resistencia, considere usar valores más altos en las resistencias que no sean de 100 ohmios, ya que 5 V a través de resistencias del orden de 100s de ohms producirían una corriente del orden de 10s de mA que es algo innecesariamente alto. Supongo que los valores más razonables serían 10k Ohm o 47k Ohm.