Ajuda!!!! Keypad não reconhece teclas do teclado matricial

Bom dia, garagistas,

estou tentando montar um projeto que utiliza um teclado matricial e um display lcd, para testar a comunicação do teclado entrei um código na internet que utilizava a biblioteca <keypad.h>, instalei a biblioteca, montei o circuito como indicado (ligação normal do teclado) e utilizando o monitor serial para identificar as teclas, mas quando aperto ele reconhece somente o primeiro número de cada linha independente da coluna que estiver apertando. Por exemplo na linha 1 tenho as teclas < 1, 2, 3, A>, quando aperto qualquer uma delas aparece somente o número 1, acontecendo para as outras linhas também. Alguém sabe como resolver este problema?? Obrigado!!

Segue abaixo o código que usei para teste:

/*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);
}
}

Exibições: 725

Responder esta

Respostas a este tópico

Michel, bom dia!

O código está correto, sem erros.

Como você fez as ligações?

Envie uma imagem do seu esquema.

A diferença desse esquema com o meu são os resistores pull down que utilizei de 470ohm ao invés de 220ohms, mas já testei com valores maiores e menores mas não mudou o resultado.

Anexos

A ligação dos pinos não bate com o sketch.

Veja no sketch:

byte rowPins[numRows] = {9, 8, 7, 6}; //Rows 0 to 3
byte colPins[numCols] = {5, 4, 3, 2}; //Columns 0 to 3

No desenho:

11,10,9,8

6,5,4,3

Esqueci de comentar, eu alterei as ligações para como estavam no sketch. E testei também alterando o sketch para os pinos do desenho. O resultado foi o mesmo para os dois casos.

Tente fazer as ligações sem os resistores.

Eu fiz esse esquema sem os resistores e deu certo.

A library KeyPad ativa os resistores por software...

Sem os resistores funcionou.

Estranho, porque eu tinha testado antes e não tinha funcionado. Vai entender!

Mas muito obrigado, vc me ajudou bastante!!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço