Realizar a montagem do circuito abaixo.
A programação a seguir é para apenas um relé.
O projeto possui um relé que é acionado toda vez que é digitado a senha correta 2204 e logo em seguida pressionado o botão *. Quando isso é feito, também acenderá o led verde. Caso contrário o led vermelho permanece ligado.
Para reiniciar o digitar da senha, basta apertar * novamente.
O projeto deve possui mais um relé, onde deverá ter uma segunda senha para abrir um segundo relé. Também deve ter mais 2 leds, verde e vermelho, para o segundo relé.
#include <Keypad.h> // Biblioteca para o funcionamento do teclado de membrana
char* password = "2204"; // Senha correta para destrancar
int position = 0; // Variável para a posição da senha
const byte ROWS = 4; // Número de linhas do teclado
const byte COLS = 4; // Número de colunas do teclado
char keys[ROWS][COLS] = { // Mapeamento das teclas do teclado
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = { 8, 7, 6, 1 }; // Pinos de conexão das linhas do teclado
byte colPins[COLS] = { 5, 4, 3, 0 }; // Pinos de conexão das colunas do teclado
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); // Teclado
const int ledVermelho = 12; // Pino para o LED vermelho
const int ledVerde = 13; // Pino para o LED verde
const int relePin = 11; // Pino para o controle do relé (exemplo: pino 11)
void setup(){
pinMode(ledVermelho, OUTPUT); // Configura o LED vermelho como saída
pinMode(ledVerde, OUTPUT); // Configura o LED verde como saída
pinMode(relePin, OUTPUT); // Configura o pino do relé como saída
digitalWrite(relePin, LOW); // Relé começa desativado (fechado)
setLocked(true); // Estado inicial da fechadura (trancada)
}
void loop(){
char key = keypad.getKey(); // Lê a tecla pressionada
// Se pressionar "*" ou "#", reseta a posição da senha e tranca a fechadura
if (key == '*' || key == '#') {
position = 0; // Reseta a posição da senha
setLocked(true); // Tranca a fechadura
}
// Se a tecla pressionada corresponder ao próximo número da senha
if (key == password[position]) {
position++; // Avança para a próxima posição da senha
}
// Se a senha foi inserida corretamente
if (position == 4) {
setLocked(false); // Destranca a fechadura (ativa o relé)
}
delay(100); // Atraso de 100 milissegundos
}
// Função para controlar o estado da fechadura
void setLocked(int locked){
if (locked) {
digitalWrite(ledVermelho, HIGH); // Acende o LED vermelho
digitalWrite(ledVerde, LOW); // Apaga o LED verde
digitalWrite(relePin, LOW); // Desativa o relé (fechadura trancada)
} else {
digitalWrite(ledVerde, HIGH); // Acende o LED verde
digitalWrite(ledVermelho, LOW); // Apaga o LED vermelho
digitalWrite(relePin, HIGH); // Ativa o relé (fechadura destrancada)
}
}