Bom, estou desenvolvendo uma fechadura por senha para um trabalho da faculdade, consegui fazer a o código e a comunicação com o excel preenchendo a hora e a senha de quem foi digitada, porém quando vou digitar outra senha parece q a senha antiga continua armazenada no "eKey" fazendo assim que qualquer outra senha o arduino interpreta como senha incorreta.
Como corrigir isso?
// Projeto 8-1 – Acionando rele via teclado matricial 4X4
#include <Password.h> // Biblioteca utilizada para controle de senha.
#include <Keypad.h> // Biblioteca para controle do teclado de matrizes.
char senha[]= "User1";
char senha2[]= "User2";
char senha3[]= "User3";
char senha4[]= "Senha Errada";
// Senha utilizada para acionamento do rele.
Password password = Password( "1" );
Password password2 = Password( "4" );
Password password3 = Password( "7" );
const byte ROWS = 4; // Quatro linhas por...
const byte COLS = 4; // Quatro colunas.
// Define o Keypad (mapa do circuito do teclado).
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
// Conecta o teclado matricial em linha 0, linha 1, linha 2, linha 3 e linha 4...
//dos pinos do arduino.
byte rowPins[ROWS] = {9,8,7,6};
// Conecta o teclado matricial em coluna 0, coluna 1, coluna 2, coluna 3 e...
//coluna 4 do arduino.
byte colPins[COLS] = {12,11,10,5};
// Cria um objeto Keypad.
Keypad keypad=Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup(){
pinMode(13, OUTPUT); // Define pino 13 como saída.
pinMode(4, OUTPUT); // Define pino 4 como saída.
Serial.begin(9600); // Inicializa Serial Monitor.
Serial.println("CLEARDATA");
Serial.println("LABEL,Hora,Empregado,Dia");
keypad.addEventListener(keypadEvent);
keypad.setDebounceTime(250);
}
void loop(){
keypad.getKey();
}
void keypadEvent(KeypadEvent eKey){
switch (keypad.getState()){ // Condição switch...
case PRESSED: // Se precionado algum botão...
Serial.println(eKey); // Armazena numero digitado na variável eKey.
switch (eKey){
// Pressionando "D" confirma se a senha foi digitado corretamente.
case 'D': guessPassword();
case PRESSED: 'D';
default:
password.append(eKey);
password2.append(eKey);
password3.append(eKey);
}
}
}
void guessPassword(){
// Informa no Serial Monitor "Verificando, aguarde...".
Serial.print("Verificando, aguarde... ");
if (password.evaluate()){
// Informa no Serial Monitor "Acionando rele...".
Serial.println("Acionando rele... ");
Serial.print("DATA,TIME,");
Serial.println(senha);
digitalWrite(13, HIGH); // Ativa o rele.
delay(2000); // Rele fica acionado por 2 segundos e depois...
digitalWrite(13, LOW); // Desativa o rele.
password.reset(); // Apaga a senha.
}
else if (password2.evaluate()){
Serial.println("Acionando rele... ");
Serial.print("DATA,TIME,");
Serial.println(senha2);
digitalWrite(13, HIGH); // Ativa o rele.
delay(2000); // Rele fica acionado por 2 segundos e depois...
digitalWrite(13, LOW); // Desativa o rele.
password2.reset(); // Apaga a senha.
}
else if (password3.evaluate()){
Serial.println("Acionando rele... ");
Serial.print("DATA,TIME,");
Serial.println(senha3);
digitalWrite(13, HIGH); // Ativa o rele.
delay(2000); // Rele fica acionado por 2 segundos e depois...
digitalWrite(13, LOW); // Desativa o rele.
password3.reset(); // Apaga a senha.
}
else{
Serial.println("Acesso Negado");
Serial.print("DATA,TIME,");
Serial.println(senha4);
digitalWrite(4, HIGH);
delay(2000);
digitalWrite(4, LOW);
password.reset(); // Apaga a senha.
password2.reset(); // Apaga a senha.
password3.reset(); // Apaga a senha.
}
}