Sì, sembra una buona idea, ma comunque proporrò un'alternativa che mi è appena venuta in mente.
Se hai accesso alle porte logiche puoi mappare molti n
pulsanti ai ceil(log2(n + 1))
pin attraverso la logica booleana. Ad esempio, se hai 4 pulsanti, ma solo 2 pin puoi creare una configurazione come questa:
Buttons | Pins
---- | --
0123 | 01
---- | --
0001 | 00
0010 | 01
0100 | 10
1000 | 11
Cioè, button0
premuto dovrebbe avere pin0
e pin1
basso; button1
, pin0
basso e pin1
alto; button2
, pin0
alto e pin1
basso; e button3
, pin0
e in pin1
alto.
Da ciò derivano le seguenti espressioni booleane
pin0 = button2 OR button3
pin1 = button1 OR button3
Una mappatura di 4 pulsanti a 2 pin potrebbe quindi essere realizzata con solo 2 porte OR. Avresti bisogno di un pin aggiuntivo e della logica aggiuntiva, tuttavia, per indicare se un pulsante viene premuto.
Naturalmente, ci saranno ancora problemi se si premono più pulsanti contemporaneamente.
Inoltre, se continuerai con l'approccio della resistenza, considera l'utilizzo di valori maggiori sui resistori diversi da 100 ohm da 5 V attraverso resistori nell'ordine di 100s di ohm produrrebbe una corrente dell'ordine di 10 s di mA che è gentile di inutilmente alto. Immagino che valori più ragionevoli sarebbero 10k Ohm o 47k Ohm.