Inicialmente eu quero agradecer aos garagistas pela boa vontade e consiencia em compartilhar o conhecimento estou tentando imprimir no LCD e porta serial o sinal proveniente de um teclado membrana 4x4 acoplado ao arduino DUE bom tudo que eu acho que devia ser simples no DUE não e assim.
Eu consigo imprimir com a seguinte condição apertando o numero 1 ,10 vezes, o numero dois 30 vezes e assim por diante.
Nota eu instalei o codigo da biblioteca de exemplos Keypad / Custom ele imprime normal eu copio o o mesmo codigo para dentro do meu programa vira essa anarquia, alguem poderia por favor me ensinar como corrigir esse problema para que possa continuar com meu desenvolvimento.
O codigo que esta em desenvolvimento esta em anexo no arquivo 1
Tags:
As respostas para este tópico estão encerradas.
Não entendi ao certo o seu problema...
Quando você aperta um número no teclado ele já é exibido direto ? Você queria concatenar ?
Se apertar "1" e "5" ele age como se fossem duas senhas diferentes, mas você quer que seja o número "15" ?
As senhas, no seu projeto, tem uma quantidade fixa de caracteres ?
Bom dia Sergio,
Quando usa a Biblioteca Keypad a função DELAY atrapalha o funcionamento do teclado.
Esta usando DELAY no seu programa ? Não pode usar DELAY.
Boa noite colega Jose.
Esse é o codigo que estou usando.
//Declaração da bibliotecas.
#include <Keypad.h>#include <LiquidCrystal.h>#include <KeyboardController.h>#include <due_can.h>
//Teclado membrana 4x4.
const byte ROWS = 4; //four rowsconst byte COLS = 4; //four columns //CONSTRUÇÃO DA MATRIZ DE CARACTERES
char hexaKeys[ROWS][COLS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'}}; byte rowPins[ROWS] = {14, 15, 16, 17}; //connect to the row pinouts of the keypadbyte colPins[COLS] = {18, 19, 20, 21}; //connect to the column pinouts of the keypad //INICIALIZAÇÃO DO TECLADO
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); //Inicia LCD.LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
USBHost usb;KeyboardController keyboard(usb);
String buffCadBarra = "";//String customKey = "";//String buffSenha ="";String codBarra = "";String auxBarra = "";String auxSenha = "";void keyPressed() { if(keyboard.getKey() != 19) { buffCadBarra += (char)keyboard.getKey(); } else { codBarra = buffCadBarra + '\0'; buffCadBarra = ""; } printKey();}
void printKey() {
if(codBarra != "" && codBarra != NULL){ Serial.println(codBarra); lcd.setCursor(2,0); lcd.print("Sistema Iniciado"); lcd.setCursor(2,1); auxBarra = codBarra.substring (0, 13); lcd.print (auxBarra); } codBarra =""; }void setup(){ Serial.begin(9600); while(!Serial); lcd.begin(20, 4);
} void loop() { char customKey = customKeypad.getKey(); if (customKey){ Serial.println(customKey); lcd.clear( ); lcd.setCursor(2,0); lcd.print("Senha"); lcd.setCursor(2,1); lcd.print(customKey); } usb.Task(); }
Serial.begin(9600);
Serial.begin(9600);
while(!Serial);
lcd.begin(20, 4);
Por favor todos os textos que li em relação a comunicação seria por meio de porta USB mencionão a utilização do codigo acima em negrito neste caso devo excluilo?
Boa noite,
Qual display LCD esta usando ?
REF: 5LC02
Display LCD 20×4 (20 colunas por 4 linhas) com backlight azul e escrita branca é usado em toda indústria e em projetos eletrônicos com Arduino, Raspberry Pi e PIC, podendo ser operado em 4 ou 8-bits paralelamente.
/* @file CustomKeypad.pde
|| @version 1.0
|| @author Alexander Brevig
|| @contact alexanderbrevig@gmail.com
||
|| @description
|| | Demonstrates changing the keypad size and key values.
|| #
*/
#include <Keypad.h>
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
{'0','1','2','3'},
{'4','5','6','7'},
{'8','9','A','B'},
{'C','D','E','F'}
};
byte rowPins[ROWS] = {3, 2, 1, 0}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {7, 6, 5, 4}; //connect to the column pinouts of the keypad
//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
void setup(){
Serial.begin(9600);
}
void loop(){
char customKey = customKeypad.getKey();
if (customKey){
Serial.println(customKey);
}
}
Instalando apenas esse codigo a mesma montagem funciona perfeitamente transferi esse codigo para meu programa o mesmo codigo ja não funciona mais o problema esta na base do codigo que estou usando mais não sei qual o erro ou onde procurar informação para esse tipo de sintoma que esta sendo apresentado.
Bom dia,
Você esta usando alguns pinos da interface serial para controlar o Teclado (D0 e D1)
byte rowPins[ROWS] = {3, 2, 1, 0}; //connect to the row pinouts of the keypad
Não faça isso ! Mude os pinos.
Boa tarde colega Jose o teclado esta ligado nos pinos:
char hexaKeys[ROWS][COLS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'}}; byte rowPins[ROWS] = {14, 15, 16, 17}; //connect to the row pinouts of the keypadbyte colPins[COLS] = {18, 19, 20, 21}; //connect to the column pinouts of the keypad //INICIALIZAÇÃO DO TECLADO
Estou utilizando esta pinagem {14, 15, 16, 17}; {18, 19, 20, 21};
Esse codigo assima e o codigo horiginal da biblioteca KEYPAD CUSTOM onde o arduino responde perfeitamente ao codigo funciona sem problemas.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por