Crear una secuencia binaria para usar menos entradas

1

Digamos que tengo 63 botones, pero solo hay unas pocas entradas en Arduino. Quiero saber cuál fue presionado. Para minimizar el número de entradas utilizadas, podría decir de una secuencia binaria. Si presiono el botón 61, necesito tener seis entradas que devuelvan 1,0,1,1,1,1. ¿Cómo convertiría el número del botón a binario?

Si conoces una forma más fácil de decirme, es la única que se me ocurrió.

    
pregunta Nicolas

4 respuestas

2

6 resistencias desplegables, una para cada línea de datos. 1 a 5 diodos de cada botón, el botón conectado a vcc.

El botón 1 tiene un diodo para levantar la línea d0 cuando se presiona.

El botón

61 tiene 5 diodos a las líneas d5, d3, d2, d1, d0 como en el ejemplo anterior.

Botón 0 no utilizado. Cuando se presiona cualquier botón, al menos una de las líneas de datos subirá. Se puede usar para interrumpir presionando un botón.

Los despliegues adecuados, casi cualquier valor, 10k servirán.
Diodos adecuados, casi cualquier diodo, 1N4148 funcionarán, bastante baratos para los 100 s.

Esta es una solución estática, simple, pero usa cargas de diodos. Hay otros.

Podrías ponerlos en una matriz, escanear y decodificar.
Podrías ponerlos en un registro de turnos.

Como Arduino tiene entradas ADC, puede usar cada botón para cambiar varios resistores de valor, para cambiar el voltaje en los ADC. Si puede obtener la resolución suficiente para resolver los 61 botones sin calibración o ajuste es otro tema, puede dividirlo en 4 canales de 16 botones.

    
respondido por el Neil_UK
0

Una forma posible es utilizar los registros de desplazamiento de entrada para realizar una conversión en paralelo a la serie. Los registros de turnos se cubren con gran detalle en la red (intente leer esta descripción ), por lo que no iré demasiado lejos. aquí. Necesitaría varias (9 en su caso) de ellas, ya que normalmente cada una tiene ocho entradas. Se conectarán en una cadena para crear un solo número de 64 bits o varios números más pequeños: la elección es suya.

Hago este tipo de cosas todo el tiempo, y es bastante fácil. Podría crear tres valores de 24 bits y leerlos periódicamente, luego realizar un XOR con los valores anteriores para detectar cambios. Esto requerirá 3 entradas y una salida (para un reloj) de su Arduino. Si está limitado en las entradas o simplemente lo prefiere, encadene los registros para formar un solo número de 64 bits y luego solo necesitará 1 pin de entrada, aunque es posible que no pueda almacenar todos esos bits en un solo valor en Arduino, por lo que llevaría más de una lectura.

En cualquier escenario anterior, es algo que un principiante puede hacer.

    
respondido por el Dan
0

Puede seguir las ideas de Contador de décadas de lectura pregunta.

Hay muchas formas de multiplexar entradas de manera digital o analógica.

    
respondido por el KalleMP
0

lo que necesitas es una matriz de teclado / teclado. Aquí hay una guía completa sobre el uso de la matriz de teclado, fácil de entender.

enlace

    
respondido por el Yasir Mohamed

Lea otras preguntas en las etiquetas