Ir ao conteúdo
  • Cadastre-se

Alexandreml

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

0
  1. Boa nite pessoal, estou programando um arduino junto com um teclado matricial 4x4, um display 16x2 e um modulo MFRC522 para funcionar como uma ttranca por rfid e senha. Tudo até o rfid funciona perfeitamente mas apos implementar a senha com a biblioteca keypad e Password, obtenho o erro supracitado em vários pontos do programa, se não me engano 4, e não tenho ideia de como resolver pois olhando com meus olhos iniciantes não existe erro de lógica nem de sintaxe, todos os formatos corretos. //Bibliotecas #include <SPI.h> #include <MFRC522.h> #include <LiquidCrystal_I2C.h> #include <Password.h> #include <Keypad.h> //Pinos #define LED_VERDE 53 #define LED_VERMELHO 52 #define BUZZER 50 #define SS_PIN 53 #define RST_PIN 10 void initkey() { const byte rows = 4; const byte cols = 4; char keys[rows][cols]= { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'#','0','*','D'} }; byte rowPins[rows] = {}; byte colPins[cols] = {}; Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, rows, cols); } void initpass() { Password password = Password("123456"); } String IDtag = ""; //Variável que armazenará o ID da Tag bool Permitido = false; //Variável que verifica a permissão //Vetor responsável por armazenar os ID's das Tag's cadastradas String TagsCadastradas[] = {"6516922641", "ID_2", "ID_3", "ID_4"}; MFRC522 LeitorRFID(SS_PIN, RST_PIN); // Cria uma nova instância para o leitor e passa os pinos como parâmetro LiquidCrystal_I2C lcd(0x27, 16,2); // Cria uma nova instancia para o LCD void setup() { lcd.init(); //Inicia a leitura do LCD lcd.backlight(); //Liga o LCD lcd.clear(); //Limpa o Display delay(100); //Espera 100 milisegundos Serial.begin(9600); // Inicializa a comunicação Serial SPI.begin(); // Inicializa comunicacao SPI LeitorRFID.PCD_Init(); // Inicializa o leitor RFID pinMode(LED_VERDE, OUTPUT); // Declara o pino do led verde como saída pinMode(LED_VERMELHO, OUTPUT); // Declara o pino do led vermelho como saída pinMode(BUZZER, OUTPUT); // Declara o pino do buzzer como saída } void loop() { Leitura(); //Chama a função responsável por fazer a leitura das Tag's lcd.setCursor(0,0); //Linha em que sera printado senha(); } void Leitura(){ lcd.print ("Apresente a TAG:"); //Texto do print IDtag = ""; //Inicialmente IDtag deve estar vazia. // Verifica se existe uma Tag presente if ( !LeitorRFID.PICC_IsNewCardPresent() || !LeitorRFID.PICC_ReadCardSerial() ) { delay(50); return; } // Pega o ID da Tag através da função LeitorRFID.uid e Armazena o ID na variável IDtag for (byte i = 0; i < LeitorRFID.uid.size; i++) { IDtag.concat(String(LeitorRFID.uid.uidByte[i], DEC)); } //Compara o valor do ID lido com os IDs armazenados no vetor TagsCadastradas[] for (int i = 0; i < (sizeof(TagsCadastradas)/sizeof(String)); i++) { if( IDtag.equalsIgnoreCase(TagsCadastradas[i]) ){ Permitido = true; //Variável Permitido assume valor verdadeiro caso o ID Lido esteja cadastrado } } if(Permitido == true) acessoLiberado(); //Se a variável Permitido for verdadeira será chamada a função acessoLiberado() else acessoNegado(); //Se não será chamada a função acessoNegado() delay(2000); //aguarda 2 segundos para efetuar uma nova leitura } void acessoLiberado(){ Serial.println("Tag Cadastrada: " + IDtag); //Exibe a mensagem "Tag Cadastrada" e o ID da tag não cadastrada efeitoPermitido(); //Chama a função efeitoPermitido() Permitido = false; //Seta a variável Permitido como false novamente lcd.setCursor(0,1); lcd.print ("ACESSO LIBERADO"); delay(1500); lcd.setCursor(0,1); lcd.clear(); lcd.print ("Apresente a TAG:"); } void acessoNegado(){ Serial.println("Tag NAO Cadastrada: " + IDtag); //Exibe a mensagem "Tag NAO Cadastrada" e o ID da tag cadastrada efeitoNegado(); //Chama a função efeitoNegado() lcd.setCursor(1,1); lcd.print ("ACESSO NEGADO"); delay(1500); lcd.setCursor(0,1); lcd.clear(); lcd.print ("Apresente a TAG:"); } void efeitoPermitido(){ Password reset(); int qtd_bips = 2; //definindo a quantidade de bips for(int j=0; j<qtd_bips; j++){ //Ligando o buzzer com uma frequência de 1500 hz e ligando o led verde. tone(BUZZER,1500); digitalWrite(LED_VERDE, HIGH); delay(100); //Desligando o buzzer e led verde. noTone(BUZZER); digitalWrite(LED_VERDE, LOW); delay(100); } } void efeitoNegado(){ Password reset(); int qtd_bips = 1; //definindo a quantidade de bips for(int j=0; j<qtd_bips; j++){ //Ligando o buzzer com uma frequência de 500 hz e ligando o led vermelho. tone(BUZZER,500); digitalWrite(LED_VERMELHO, HIGH); delay(500); //Desligando o buzzer e o led vermelho. noTone(BUZZER); digitalWrite(LED_VERMELHO, LOW); delay(500); } } void senha() { char chave; int cont; bool permissao; chave = Keypad.getKey(); if(chave != NO_KEY && chave == '#') { for(cont = 0; cont<6; cont++) { chave = Keypad waitForKey(); Password append(chave); } permissao = Password evaluate(); if(permissao == true) efeitoPermitido(); else efeitoNegado(); chave = 0; } } Rfid_controle_de_acesso.rar

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...