// Cofre Arduino - Projeto Usinainfo para controle de fechaduras.
// Código teste para liberação de acesso ao Cofre Arduino
#include <Password.h> // Inclui biblioteca Password.h
#include <Keypad.h> // Inclui biblioteca Keypa.h
#include <BuzzerManager.h> // incluir biblioteca BuzzerManager
#define rele 3 // Define o pino D2 como rele
#define buzzer 11 // Define o pino D11 como buzzer
Password senha = Password("ABACA01DA06"); // Senha para liberação de acesso
const byte linha = 4; // Define número de linhas
const byte coluna = 4; // Define número de colunas
// Relaciona linha e colunas para determinação dos caracteres
char keys[linha][coluna] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte pinolinha[linha] = {10, 9, 8, 7}; // Declara os pinos de interpretação das linha
byte pinocoluna[coluna] = {6, 5, 4, 2}; // Declara os pinos de interpretação das coluna
Keypad keypad = Keypad(makeKeymap(keys), pinolinha, pinocoluna, linha, coluna);
void setup() {
pinMode(rele, OUTPUT); // Declara o pino como um pino de Saída de sinal
pinMode(buzzer, OUTPUT); // Declara o pino como um pino de Saída de sinal
Serial.begin(9600);
keypad.addEventListener(keypadEvent);
keypad.setDebounceTime(5); // Tempo de atraso para leitura das teclas.
}
void loop() {
keypad.getKey();
}
// Realiza a leitura das teclas pressionadas e aguarda confirmação para verificar
void keypadEvent(KeypadEvent eKey) {
switch (keypad.getState()) {
case PRESSED:
Serial.print("Digitado: ");
Serial.println(eKey);
tone(buzzer, 1000);
delay(50);
noTone(buzzer);
switch (eKey) {
case '*': verificasenha();
break;
default:
senha.append(eKey);
}
}
}
// Verifica o senha digitada após pressionar C
void verificasenha() {
Serial.print("Verificando, aguarde... ");
if (senha.evaluate()) {
Serial.println("Acionando rele... ");
tone(buzzer, 500);
delay(500);
noTone(buzzer);
digitalWrite(rele, HIGH);
tone(buzzer, 1000);
delay(50);
noTone(buzzer);
delay(2000);
digitalWrite(rele, LOW);
senha.reset();
}
else {
digitalWrite(rele, LOW);
Serial.println("Senha Invalida !");
tone(buzzer, 1500);
delay(500);
noTone(buzzer);
delay(50);
tone(buzzer, 500);
delay(500);
noTone(buzzer);
delay(500);
senha.reset();
}
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
keypad1:R1
keypad1:R2
keypad1:R3
keypad1:R4
keypad1:C1
keypad1:C2
keypad1:C3
keypad1:C4
bz1:1
bz1:2
relay1:VCC
relay1:GND
relay1:IN
relay1:NC
relay1:COM
relay1:NO