// 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 <CuteBuzzerSounds.h>
/*
* Author: Everton Ramires
* More Tutorial: https://www.youtube.com/channel/UC7zG4YQJc8v-9jNGQknOx5Q
*
*
CURRENT SOUND OPTIONS:
(PT-BR)OPÇÕES ATUAIS DE SONS:
S_CONNECTION S_DISCONNECTION S_BUTTON_PUSHED
S_MODE1 S_MODE2 S_MODE3
S_SURPRISE S_OHOOH S_OHOOH2
S_CUDDLY S_SLEEPING S_HAPPY
S_SUPER_HAPPY S_HAPPY_SHORT S_SAD
S_CONFUSED S_FART1 S_FART2
S_FART3 S_JUMP 20
*/
#define BUZZER_PIN 11 // Define o pino D11 como buzzer
#define rele 3 // Define o pino D2 como rele
Password senha = Password("01DA06"); // 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
cute.init(BUZZER_PIN); // 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);
cute.play(S_CONNECTION);
delay(200);
switch (eKey) {
case '#': senha.reset();
cute.play(S_JUMP);
delay(200);break;
case '*': verificasenha();
cute.play(S_OHOOH2);
delay(200);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... ");
cute.play(S_BUTTON_PUSHED);
delay(200);
digitalWrite(rele, HIGH);
cute.play(S_HAPPY);
delay(200);
Serial.println("Cofre aberto... ");
delay(1500);
digitalWrite(rele, LOW);
Serial.println("Cofre fecha... ");
cute.play(S_SLEEPING);
delay(500);
senha.reset();
}
else {
cute.play(S_DISCONNECTION);
delay(200);
digitalWrite(rele, LOW);
Serial.println("Senha Invalida !");
cute.play(S_CONFUSED);
delay(400);
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