Problema con Teclado Matricial 4X4 en Arduino Uno (Keypad)

Estoy teniendo un problema, no sea si sea de conexion o software. El código es el siguiente

#include<Keypad.h>

const byte filas = 4;
const byte columnas = 4;
//byte pinesF[filas] = {9,8,7,6};
//byte pinesC[columnas] = {5,4,3,2};
const byte rowsPins[filas] = { 11, 10, 9, 8 };
const byte columnsPins[columnas] = { 7, 6, 5, 4 };

char teclas[filas][columnas] = {

              {'1','2','3','A'},
              {'4','5','6','B'},
              {'7','8','9','C'},
              {'*','0','#','D'}
};

//Keypad teclado = Keypad(makeKeymap(teclas), pinesF, pinesC, filas, columnas);
Keypad teclado = Keypad(makeKeymap(teclas), rowsPins, columnsPins, filas, columnas);
char tecla;

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

void loop() {
  tecla = teclado.getKey();
  if (tecla != 0)
    Serial.print(tecla);
  
}

Estoy usando este teclado matricial:

De acuerdo a la imagen anterior, es como realice las conexiones.

El problema que tengo,es que algunas teclas no responden y otras me salen con diferentes caracteres por ejemplo

Al presionar la tecla del carácter 1 me sale la C
Al presionar la tecla 2,3, A,4, 7 Y * no me sale nada
Al presionar la tecla 5 me sale un 1
Al presionar la tecla 6 me sale un 2
Al presionar la tecla B me sale un 3
al presionar la tecla 8 me sale un 4
Al presionar la tecla 9 me sale un 5
Al presionar la tecla C me sale un 6
Al presionar la tecla 0 me sale un *
Al presionar la tecla # me sale un 0
Al presionar la tecla D me sale un #

¿Alguna solución? Gracias.

Hola, creo que tu error está en que no tienes bien conectado el teclado.

Como bien dices aqui (y como normalmente se conecta, aunque tambien depende de que libreria uses), lo debes tener colocado en estos pines

//byte pinesF[filas] = {9,8,7,6};
//byte pinesC[columnas] = {5,4,3,2};

Y sin embargo lo has colocado en estos otros
const byte rowsPins[filas] = { 11, 10, 9, 8 };
const byte columnsPins[columnas] = { 7, 6, 5, 4 };

Y como no se exactamente que pines asignaste, lo ideal es que lo colocaras a los pines
filas 9,8,7,6
columnas 5,4,3,2

y se lo indiques asi en el sketch (const byte rowsPins..... const byte columnsPins...) .

Saludos

En serio Mikms crees que esa respuesta es válida?
Si algo tiene Arduino y/o cualquier microprocesador y la librería Keypad es su flexibilidad para usar los pines como se me de la gana. Siempre y cuando respetes filas y columnas con lo que se corresponde al teclado.

El punto es partir de algo equivocado.
Asi que yo tomaría el tester/multímetro. Lo pongo en continuidad y tomando la columna 1, pruebo fila por fila y me debe reportar cada tecla con continuidad. Y asi barro todo el teclado.
Si todo esta bien, sabre que ese pin es la columna 1 y cual es la fila 1, fila2 fila3 y fila 4, y al final las otras tres columnas.

Transfiero eso a la asignación de la matrix y tengo resuelto el enigma.

Bueno no sé realmente si es ese el problema, puesto que no indica realmente donde los tiene colocados fisicamente ni que teclado real es (aunque segun se ve es el tipico de ebay), tan solo pretendi dar una idea con la que pudiera intentar solucionar su duda, y/o pudiera probar otras opciones, para intentar que al menos pueda descartar que no sea tema de configuracion, nada más.

Logicamente los pasos exactos son saber que pin es cada uno y a que numeros se asignan en el teclado (con un polimetro) y luego actuar asignandolos en el sketch, pero como el que se ve en la imagen a la que se refiere es el tipico de ebay, y el sketch tiene asignados dos configuraciones distintas (una parece por defecto y la otra es a la que los asignó realmente) y la primera vez que yo hice uno de estos, pasaba igual (unos funcionaban otros no, y los digitos eran erroneos), el error era tan simple como colocarlos en los pines del 2 al 9.

Pero bueno tan sólo fue una idea y con probarlo no creo pase nada... igual hasta lo soluciona el pobre chaval, que tenia un monton de lecturas y nadie le dijo ni una sola opcion a su duda.

Saludos.

De hecho, al principio tenia la configuración, que decís en el post, y me pasaba exactamente lo mismo. De hecho se puede ver en el código, que lo puse como comentario.

Los pines que usa se ven en el esquema y luego son los que tiene en el código.

const byte rowsPins[filas] = { 11, 10, 9, 8 };
const byte columnsPins[columnas] = { 7, 6, 5, 4 };

Pues entonces creo que lo que queda es lapiz, papel, medidor... Y a ir pulsando y apuntando que pines corresponde a cada numero para después asignarlos correctamente en fila y columna.

Saludos.

Exacto!!