Lo que está buscando se llama escalera de voltaje .
A continuación se muestran algunos esquemas que muestran un ejemplo de una escala de voltaje.
Elesquemaestávinculadodesde LCD Keypad Shield desde DFRobot.com .
En este caso, la escala de voltaje se usa para obtener la entrada de 5 botones usando solo una entrada analógica en el Arduino. Los botones están dispuestos en 4 flechas de cursor y un botón de selección como en la imagen a continuación:
Aquíhay un enlace a más información sobre este diseño , incluido un bosquejo de Arduino que lee y descodifica los valores de la escala de voltaje y determina qué botón se presionó.
Aquí hay otro ejemplo , ahora de Freetronics.com , con más información sobre cómo funciona la escalera.
Volviendo a su pregunta, los valores de resistencia se seleccionan de manera que cada uno provoca una caída de voltaje en el pin analógico que se puede distinguir de los otros botones que se presionan. Normalmente veo casos en los que los valores de la resistencia aumentan exponencialmente (330R, 620R, 1K y 3K3 en este caso), pero creo que podría usar valores similares (todos ellos como 330R). Además, R2 está ahí para evitar un cortocircuito entre 5V y GND cuando se presiona el primer botón.
Si tuviera, digamos, 15 botones para distribuir, tendría que tener 15 resistencias, y tendría que asegurarse de que la caída de voltaje entre las resistencias adyacentes sea lo suficientemente alta como para distinguirse por las lecturas en la pin analógico. Debe considerar que el ATmega328P tiene un ADC de 10 bits (es decir, le dará valores entre 0 y 1023) pero solo muestra una precisión de 4 bits (es decir, mostrará un error de aproximadamente 10 en cada lectura). Por lo tanto, debe buscar valores de resistencia que causen una caída de voltaje que le proporcione más de 10 en cada llamada a analogRead (). Esto limitará el número máximo de botones que puede leer de esta manera.
Hay principalmente 3 formas de obtener los valores de resistencia:
-
Puede calcular la lectura de voltaje para cada botón considerando ese botón como presionado, eliminando las partes del último circuito de voltaje que están abiertas y aplicando la Ley de Ohm. Por lo tanto, elija un botón, reemplácelo por un cable y quite todos los otros botones. Luego puedes calcular el voltaje para ese botón.
-
También puedes simular el circuito. ¿Notaste que puedes simular el circuito kimliv publicado? Al hacer clic en sus esquemas, irá a CircuitLabs, que es un sitio web que le permite simular circuitos. Allí podrás cambiar los valores de la resistencia, presionar los botones y ver los resultados. También puede usar otros paquetes de simulación de circuitos que estén disponibles.
-
Construyéndolo. Coloque el circuito en una placa de prueba, pruebe diferentes valores de resistencia y mida la caída de voltaje con Arduino y Serial.println (). También puede usar un multímetro digital (DMM) para eso.
Tenga en cuenta que la escalera de voltaje solo registra un botón al mismo tiempo. Si presiona más de un botón, solo se seleccionará el que esté más cerca de la parte superior de los esquemas.