Controle Servos (8) com push buttons (16)


#1

Prezados!!
Sou novato no Fórum, novato em eletrônica, e mais ainda em programação.
Tenho uma dúvida com relação a programação do arduíno (Nano ou Uno), para controle de 08 servos, sendo 02 botões para cada servo.
Na verdade é um controle de desvios de linha de trem (8 desvios).
São dois botões push button para cada servo, um botão movimenta para direita(84°), outro para a esquerda(110°).
Consegui realizar um desvio com o arduíno Nano, mas a quantidade de portas é pouca. Ouvi falar que tem como fazer a leitura de vários botões com uma porta/pino, mas não estou conseguindo entender isso. Alguém pode me ajudar?!
Grato.


#2

Uma sugestão de quem NÃO TEM arduino, mas que mexe com eletronica faz um tempinho (uns 40 anos):
Já que o Arduino consegue ler valores analógicos nas entradas, você pode criar divisores resistivos usando os botões, e a partir do valor analógico lido pelo pino determinar qual foi o botão pressionado. Isso não é válido no caso de pressionar diversos botões ligados ao mesmo pino simultaneamente, mas se você vai controlar uma maquete não tem razão de fazer isso.
Essa técnica é usada por centrais de alarme sofisticadas como as Paradox, em que você consegue determinar violações em 4 sensores diferentes usando apenas um par de fios, e resistores em paralelo com os contatos de cada sensor. Por exemplo, imagine 4 botões NF (normalmente fechados) ligados em série. Em paralelo com cada um desses botões você coloca resistores, com os seguintes valores: 1k, 2k2, 4k7 e 10k.
Isto feito, você alimenta essa série com uma corrente constante, digamos através de um resistor de 10k Ohms ligado ao +5V, e liga o final da série de botões ao terra. Se medir a tensão no “topo” da série, com todos os botões “fechados” (estou supondo botões NF, lembre-se), terá 0V. Se abrir o botão em paralelo com o resistor de 10k terá 5V (divisor resistivo). Se abrir o botão em paralelo com 1k terá cerca de 0,5V, e por aí vai…


#3

Uma sugestão é vc trabalhar mais na hr da programação por exemplo vc pode fazer uma função para os botoes
com a utilização de (WHILE,IF, ELSE) a ideia é a seguinte fazer os botoes temporizados por exemplo se vc precionar o botao 1 segundos ele vai escolher o servo 1 se vc apertar o botão 2 segundos ele vai selecionar o servo 2 e assim por diante isso é uma opção.
Outra opção é usar contadores incrementais na programação por exmplo vc preciona o botão 3 vezes e vc coloca um botão confirma ai fica selecionado o sevo 3 se vc precionar o botao 4 vezes e preciona o botao confirma ai vc seleciona o servo 4 e assim por diante para ficar mais legal vc pode colocar um display de 7 segmentos para vizualizar qual servo vc está selecionando.
Com essas sujestões vc vai pecisar de poucas portas.
Abç.