Tás a ser preguiçoso.
Se sabes calcular um divisor resistivo, também sabes calcular resistências para ter um espaçamento entre os valores melhor.
Por exemplo para 4 resistências, vamos manter a "comum" nos 100k. Queres um intervalo +/- uniforme entre elas. 5V/5 intervalos=1V de intervalo. As relações dos divisores vão ser portanto 1/5, 2/5, 3/5 e 4/5.
(RintN = Resistência do interruptor N)
Num divisor a Vout=R2/(R1+R2) Vin, ou seja para este caso vais ter R2=100k, pelo que as as resistências vão ser 1/5=100k/(Rint1+100k) <=> Rint1=400k, valor standard mais perto 390k, e calculando para as outras e arredondando para a série E12 Rint2=150k, Rint3=68k e Rint4=27k.
Ou seja, para 4 interruptores se usares resistências para cada um respetivamente de
390k, 150k, 68k e 27k respetivamente, com a resistência comum de 100k vais ter as tensões de saída para cada interruptor de:
Int1= 1.02V
Int2= 2V
Int3= 2.976V
Int4= 3.937V
Acabaste de poupar um ampop. Se não acreditas no meu "guardanapo" mete lá no simulador
Estes método é o melhor para um espaçamento uniforme quando primes 1 só interruptor, mas se queres detetar vários interruptores em simultaneo não vai funcionar grande coisa.
Para esse caso estive a dar uma vista de olhos (e a aprender mais uma coisa, ver primeira linha desta resposta
) e acho que encontrei a melhor solução:
Nesse caso a melhor é mesmo criar uma escala de valores progressiva conforme o número de interruptores premidos, ao estilo DAC. Para conseguires uma progressão linear de valores, a melhor solução que encontrei é na formula do divisor de tensão Vout=Vin*R2/(R1+R2) se o valor de R2 for muito menor que o de R1 podemos aproximar por Vout=Vin*R2/R1, o que nos "lineariza" a função.
Assim podemos escolher as resistências dos interruptores numa progressão quadrática para termos os valores distribuídos linearmente numa parte das voltagens possíveis, desde que sejam maiores consideravelmente que a resistência comum.
Por exemplo para 4 interruptores outra vez, vamos escolher a resistência comum (R2) com 1k, e fazer que o valor full scale (todos os interruptores ligados) seja 1V, para que R2 seja significatimamente menor que as outras , o que dá que a resistência do interruptor MSB (Rint1) (1/2FS=0,5V) seja 0,5V=5V*1k/(Rint1+1k)<=> Rint1=8k, em E12 Rint1=8,2k, e as seguintes são na quadrática para garantir intervalos distribuídos uniformemente, à-la DAC, portanto Rint2=16k=(E12)15k, Rint3=32k=(E12)33k e Rint4=64k=(E12)68k.
Com os valores distribuídos na escala de 0V até 1V é fácil de usar a ADC com uma referência de baixo valor (pode ser a interna de 1.1V do ATMEGA), ou então amplificares com um AMPOP com ganho 5.
O gráfico anexo é o resultado deste "estudo".
Talvez tenha ficado um bocado confuso, mas está aqui tudo o que precisas e se te custar a entender alguma parte posso tentar explicar melhor.