Teclado 4x4 a Microcontrolador

Tengo keyapd de 8 pines 4x4, y quiero conectarlo a mi microcontrolador, he buscado en la red pero no puedo ver su configuración de pines. Tengo un problema para conectarlo por eso alguien me puede ayudar. Tengo una imagen del teclado y la descripción del pin de mi controlador aquí.descripción pi

ingrese la descripción de la imagen aquí

Necesita conectarse a cualquier puerto de E/S digital.
No es una pregunta duplicada, por cierto, he buscado lo que busco en la red. gracias por tus respuestas
Debería verificar los resultados usando las técnicas en las respuestas, pero se parece mucho al que Parallax y otros venden parallax.com/sites/default/files/downloads/…
Consulte (si desea usar solo UN pin): youtube.com/watch?v=URO042VrCKU

Respuestas (3)

Aquí hay una guía relevante

ingrese la descripción de la imagen aquí

Keypad Pin  Connects to Arduino Pin...
1           D9
2           D8
3           D7
4           D6
5           D5
6           D4
7           D3
8           D2

ingrese la descripción de la imagen aquí

/*4x4 Matrix Keypad connected to Arduino
This code prints the key pressed on the keypad to the serial port*/

#include <Keypad.h>

const byte numRows= 4; //number of rows on the keypad
const byte numCols= 4; //number of columns on the keypad

//keymap defines the key pressed according to the row and columns just as appears on the keypad
char keymap[numRows][numCols]=
{
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};

//Code that shows the the keypad connections to the arduino terminals
byte rowPins[numRows] = {9,8,7,6}; //Rows 0 to 3
byte colPins[numCols]= {5,4,3,2}; //Columns 0 to 3

//initializes an instance of the Keypad class
Keypad myKeypad= Keypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols);

void setup()
{
Serial.begin(9600);
}

//If key is pressed, this key is stored in 'keypressed' variable
//If key is not equal to 'NO_KEY', then this key is printed out
//if count=17, then count is reset back to 0 (this means no key is pressed during the whole keypad scan process
void loop()
{
char keypressed = myKeypad.getKey();
if (keypressed != NO_KEY)
{
Serial.print(keypressed);
}
}
esta conexión está usando comunicación paralela, ¿verdad? ¿Puedo tener su salida en un LCD usando comunicación serial?
@NewInEverything Todos los pines de la matriz deben estar conectados para que el escaneo del teclado funcione correctamente. El código de ejemplo solo genera el resultado mediante el puerto serie (a una terminal), pero puede modificar el código para mostrar el resultado en una pantalla.
entonces solo puedo ver la salida en el monitor serial?
@NewInEverything Sí, lea el comentario del código de la última parte
De acuerdo. D9-D2 es la entrada/salida digital del aruino verdad?. Perdón por preguntar demasiado, soy realmente un principiante en lo que respecta a la electrónica.
@NewInEverything Para la tarea específica, los pines funcionan como E/S digital, pero existen otras funciones alternativas para los mismos pines, depende del modo utilizado.
¿Cómo puedo lanzar el valor que ingresé a través del teclado al arduino como un número entero?
La variable @NewInEverything keypressedcontiene el valor de lectura como un carácter, después de verificar que se ha presionado un botón ( if (keypressed != NO_KEY)), puede usar el valor cuando lo desee, pero si necesita un número entero, debe convertirlo. Para que los caracteres "0"-"9" se conviertan en números enteros, solo necesita restar el decimal 48 (es decir, 0x30 como hexadecimal)
entonces quieres decir que necesito cambiar "Serial.print(keypressed);" a "Serial.print (tecla presionada - 48);" para convertirlo a enteros?
así que intenté cambiar ese código a "Serial.print(keypressed - 48);" y todavía obtuve la salida adecuada, ¿eso significa que la salida es un número entero?
@NewInEverything, el propósito de esa función es enviar el valor al puerto serie, ¿por qué desea enviar el valor entero a través del puerto serie? Aparte de eso, la conversión de char a int es correcta (para valores 0-9). Originalmente dijiste "ingresar a través del teclado al arduino", la keypressedvariable ya está en la memoria del arduino, no necesitas enviarla a ningún lado, solo procésala de la manera que quieras dependiendo de tu tarea.
bueno, lo necesitaba porque estoy creando una calculadora. por lo tanto, tengo una pantalla LCD conectada al arduino con comunicación en serie, con su código también puedo mostrarla en la pantalla LCD. eso lo resume.
si quiero convertir la "A", todo lo que tengo que hacer es escribir este código if(keypressed == 2A){Serial.print("+");} ¿verdad? "2A" es el valor hexadecimal de "A".
@NewInEverything No, ese no es el valor hexadecimal 'A', puede verlo en cualquier tabla ASCII , es 0x41. Aparte de eso, su código enviará +' cuando keypressedsea igual a 'A' (es decir if(keypressed == 0x41) o la alternativa if(keypressed == 'A'))
Tengo una solución más simple. Acabo de editar el mapa de teclas y puse "+" en lugar de "A". jaja. aunque gracias
y quiere decir if(keypressed - 48)más bien if(keypressed == 0x41porque eso devolverá mostrar "0".
@NewInEverything Esto if(keypressed == 0x41es lo mismo que if(keypressed == 'A', será cierto cuando la tecla presionada sea igual al valor de carácter 'A'. El truco -48 solo tiene un propósito si la intención es convertir los caracteres '0'..'9' en números enteros 0..9
Eso es lo que necesito hacer. Para convertirlo '0'-'9' a enteros. Por cierto, lo tengo funcionando solo además. Todavía estoy pensando qué hacer a continuación, si no puedo resolverlo. volvere a pedir tu ayuda

Descubrir el cableado de la matriz del teclado 4x4 es muy simple con un ohmímetro. Conecte los cables del medidor a pares seleccionados de conductores en el cable de conexión. Luego presione los botones uno a la vez para ver qué interruptor cierra la conexión entre los conductores seleccionados. Si escribe los números de conexión del 1 al 8 y luego hace una tabla de los pares seleccionados en secuencia y qué interruptor cierra cada par. Algunos pares no harán que se registre ningún cierre. Cuando esto suceda, sabrá que el par de cables de conexión seleccionados son cables de fila en la matriz de interruptores o cables de columna.

He buscado en la red pero no puedo ver su configuración de pines.

Supongo que estoy viendo una cola de 8 cables.
Tal vez 9. Solo tal vez 7.

Es probable que el teclado tenga las conexiones mostradas en 4 filas y 4 columnas. Si hay un noveno cable, puede ser un blindaje.

Use un medidor de ohmios para decir algo así como un rango de 100k (o 199.9k o lo que sea). Esto le permite no perder contactos de muy alta resistencia. Un rango de 20k PUEDE estar bien, pero 200k es más seguro.

Haga contacto con el extremo conductor de la cola con las sondas del medidor. Intente colocar 2 sondas en la misma cola y asegúrese de que puede ver fácilmente la respuesta del medidor: la mayoría de las colas estarán aisladas hasta cerca del final y algunas pueden oxidarse en las superficies conductoras y necesitan un roce CUIDADOSO con la punta de la sonda del medidor para hacer contacto. Las colas se pueden hacer depositando tinta conductora, por lo que generalmente no serán muy fuertes, así que tenga un cuidado razonable al hacer contacto. Por lo general, no son súper delicados, solo sé sensato.

SI tiene un conector para el teclado, utilícelo. Asumiré 8 conductores numerados del 1 al 8 a continuación. Ajuste según sea necesario.

Tener un asistente no es esencial, pero ayuda.
Mantenga presionada una tecla y coloque una sonda en el contacto 1 (primer cable) y siga todos los demás cables 2-8 con la sonda para ver si se puede encontrar un contacto.
De lo contrario, coloque una sonda en el segundo cable (contacto 2) y continúe con 3-8. Entonces
3 + 4-8
4 + 5-8
5
+ 6-8 6 + 7-8
7 + 8

Si no obtiene un cierre de contacto en CUALQUIERA de los anteriores, entonces no está haciendo el contacto adecuado (lo más probable) o el teclado está inactivo (lo menos probable).

Registre el resultado y pruebe con otra clave.

Después de algunos intentos, aparecerá un patrón. Probablemente 4 x fila y 4 x columna como arriba.

Un método alternativo es elegir dos contactos para las sondas del medidor y presionar las teclas a su vez hasta que ocurra un cierre, por ejemplo, los contactos en 2 + 5 PUEDEN responder a la tecla 4. (2da fila, 5-4 = 1 = 1ra columna) pero puede que no.

Este método DEBE funcionar correctamente si la matriz solo tiene interruptores.

ALGUNOS teclados tienen diodos internos, pero esto es muy poco probable para su teclado. Para teclados con diodos, la polaridad del medidor importa.


Kayboards que se parecen mucho a los suyos se pueden encontrar en:

Aquí - ver abajo

ingrese la descripción de la imagen aquí


Y aquí por $6.99 - mismo arreglo.
Fabricante: Parallax
Código de producto: Dev-4x4Key-01


Tal vez aquí por $ menos.

Ficha de datos

ingrese la descripción de la imagen aquí