Comportamiento inusual al controlar una matriz de botones

2

Tengo una matriz de 4x4 para 16 botones. Cada fila / columna está conectada directamente a los pines de un microcontrolador desconocido. Cuando conecto los pines directamente entre sí, el microcontrolador se comporta correctamente, como si se presionara el botón correspondiente.

Quiero controlar los pines directamente con un Arduino o conectarlos directamente a GND / VCC. Sin embargo, cuando los enciendo de esta manera, el microcontrolador puede:

  • no hace nada
  • se comporta como si se presionaran varios botones a la vez.

¿Por qué es eso? ¿Me estoy perdiendo algo, como las resistencias pullup?

El microcontrolador admite ciertos botones al mismo tiempo. Creo que tiene que ver con el escaneo de la fila. < - Esto resultó ser cierto, el microcontrolador verificó una fila en ese momento. Por lo tanto, fue necesario activar el pin de la columna solo cuando se seleccionó la fila derecha.

    
pregunta 2080

2 respuestas

1

La pregunta es: ¿cómo estás "controlando" los cables usando un arduino? El microcontrolador probablemente esté subiendo (o bajando) las filas (o columnas) una por una, y luego verifica el voltaje en el otro eje para detectar la presión de los botones en esa fila / columna.

Para emular esto usando un arduino, deberías monitorear el eje energizado, y luego salir al eje de detección en forma sincronizada. Dependiendo de cómo esté programado el microcontrolador desconocido, esto puede ser muy difícil, ya que podría leerse muy pronto después de energizarse. Quizás demasiado rápido para que reaccione tu arduino.

También vale la pena señalar que existen otros arreglos además de la fila / columna. ¿Estás seguro de que así es como se organiza el teclado?

    
respondido por el Drew
1

El teclado utiliza multiplexación, consulte aquí la teoría.

¿Qué puedes hacer?

Primero necesita identificar las entradas y las salidas y descubrir si el procesador desconocido controla las salidas en lógica positiva o negativa. Esto debería ser fácil ya que ya hiciste algunas pruebas y el tablero aún funciona. En lógica positiva, una entrada conectada a VDD mostrará tantos botones pulsados a la vez. En lógica negativa, una entrada conectada a GND mostrará tantos botones pulsados a la vez. Una salida no hará nada conectado a VCC o GND. Como supongo que puede ver las filas y las columnas, solo necesita hacer esta prueba para una línea de cada una. Incluso si aún no ha quemado una salida, use una resistencia pequeña para las pruebas (470 ohmios). El ejemplo en el enlace está en lógica positiva (una entrada / salida activa es alta)

Puede intentar simular el comportamiento del teclado conectando cuatro entradas de arduino a las salidas del teclado del procesador y cuatro salidas de arduino a las entradas del teclado del procesador, pero es poco probable que esto funcione de manera confiable ya que, al presionar una tecla simulada, la salida debe seguir a la entrada conectada. muy rapido. Un microcontrolador con motor CLC como algunos PIC-s de microchip puede hacer eso, pero Arduino no.

Puede usar una matriz de optoacoplador, si la matriz está en lógica positiva, conecte el colector del fototransistor al emisor de salida para la entrada y en reversa si está en lógica negativa. Si funciona, puede usar también la multiplexación para controlar los optoacopladores como se ve en el final del artículo del enlace anterior. Puede encontrar optoacopladores cuádruples muy económicos como este , necesitará Cuatro de ellos, menos de 10 $ para todos.

    
respondido por el Dorian

Lea otras preguntas en las etiquetas