Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Keypad.h> // BIBLIOTECA DO TECLADO MATRIZ 4X3
- #include <Servo.h> // BIBLIOTECA SERVO MOTOR
- #include <Wire.h> // BIBLIOTECA PADRÃO
- #include <LiquidCrystal_I2C.h> // BIBLIOTECA DA TELA LCD COM ADAPTADOR I2C
- #include <SPI.h> // BIBLIOTECA UTILIZADA PARA RFID
- #include <MFRC522.h> // BIBLIOTECA DO LEITOR RFID RC522
- LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7,3, POSITIVE); // PADRÃO DE CONTROLE DA TELA LCD
- #define SS_PIN 53 // DEFININDO O PINO SS NA PORTA 53
- #define RST_PIN 5 // DEFININDO O PINO RST NA PORTA 5
- MFRC522 mfrc522(SS_PIN, RST_PIN); // DECLARANDO A VARIAVEL DA BIBLIOTECA RFID
- Servo servo_Motor; // DECLARANDO VARIAVEL SERVO MOTOR
- String senha = "1408"; // DECLARANDO VARIAVEL SENHA
- int position = 0; //VARIÁVEL PARA LEITURA DE POSIÇÃO DA TECLA PRESSIONADA
- const byte ROWS = 4; //NUMERO DE LINHAS DO TECLADO
- const byte COLS = 3; //NUMERO DE COLUNAS DO TECLADO
- char keys[ROWS][COLS] = { //DECLARAÇÃO DOS NUMEROS, LETRAS E CARACTERES DO TECLADO
- {'1','2','3'},
- {'4','5','6'},
- {'7','8','9'},
- {'*','0','#'}
- };
- byte rowPins[ROWS] = { 31, 33, 35, 37 }; // PINOS DE CONEXAO DAS LINHAS DO TECLADO
- byte colPins[COLS] = { 39, 41, 43 }; //PINOS DE CONEXAO DAS COLUNAS DO TECLADO
- Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );//AS VARIAVEIS rowPins E colPins RECEBERÃO O VALOR DE LEITURA DOS PINOS DAS LINHAS E COLUNAS RESPECTIVAMENTE
- const int ledVermelho = 7; // DECLARANDO LED VERMELHO NO PINO 7 DA PLACA
- const int ledAzul = 3; // DECLARANDO LED AZUL NO PINO 3 DA PLACA
- const int speakerPin = 10; // DECLARANDO O SPEAKER NO PINO 10 DA PLACA
- void setup(){
- lcd.begin (16,2); // INICIANDO O LCD DE 16X2
- Serial.begin(9600); // INICIA A COMUNICAÇÃO SERIAL EM 9600 BAUD RATE
- SPI.begin(); // INICIA A COMUNICAÇÃO SPI
- mfrc522.PCD_Init(); // INICIA MFRC522
- pinMode(ledVermelho, OUTPUT); // DECLARANDO LEDVERMELHO COMO OUTPUT
- pinMode(ledAzul, OUTPUT); // DECLARANDO LEDAZUL COMO OUTPUT
- pinMode(speakerPin, OUTPUT); // DECLARANDO SPEAKER COMO OUTPUT
- servo_Motor.attach(2); // DECLARANDO SERVO MOTOR NO PINO 2
- setLocked(true); // CHAMANDO A FUNÇÃO SETLOCKED COMO TRUE PARA INICIAR O PROGRAMA COM A 'PORTA FECHADA'
- }// FIM SETUP
- void loop()
- {
- char key = keypad.getKey(); //LEITURA DAS TECLAS PRESSIONADAS
- if (key == '*' || key == '#') { //SE A TECLA PRESSIONADA POR IGUAL A CARACTERE "*" OU "#", FAZ
- position = 0; //POSIÇÃO DE LEITURA DA TECLA PRESSIONADA INICIA EM 0
- setLocked(true); //FECHADURA TRANCADA
- } // FIM IF
- if (key == senha[position]){ //SE A TECLA PRESSIONADA CORRESPONDER A SEQUÊNCIA DA SENHA, FAZ
- position ++;//PULA PARA A PRÓXIMA POSIÇÃO
- } // FIM IF
- if (position == 4){ // SE VARIÁVEL FOR IGUAL A 3 FAZ (QUANDO AS TECLAS PRESSIONADAS CHEGAREM A 3 POSIÇÕES, SIGNIFICA QUE A SENHA ESTÁ CORRETA)
- setLocked(false); //FECHADURA DESTRANCADA
- position = 0; // VARIAVEL DE LEITURA DA TECLA RECEBE VALOR 0
- } // FIM IF
- // INICIO DO CÓDIGO RFID
- if ( ! mfrc522.PICC_IsNewCardPresent()) // FAZENDO A LEITURA DO CARTÃO
- {
- return; // RETORNA
- } // FIM IF
- if ( ! mfrc522.PICC_ReadCardSerial()) // SELECIONA UM DOS CARTÕES
- {
- return; // RETORNA
- } // FIM IF
- String conteudo= ""; // DECLARANDO A VARIAVEL CONTEUDO COMO UMA STRING VAZIA
- byte letra; // CRIANDO A VARIAVEL LETRA DO TIPO BYTE
- for (byte i = 0; i < mfrc522.uid.size; i++) // RECUPERANDO O CÓDIGO DA TAG E CARTÃO
- {
- Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
- Serial.print(mfrc522.uid.uidByte[i], HEX);
- conteudo.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ")); // ARMAZENANDO NA VARIAVEL CONTEUDO
- conteudo.concat(String(mfrc522.uid.uidByte[i], HEX)); // ARMAZENANDO NA VARIAVEL CONTEUDO
- } // FIM FOR
- conteudo.toUpperCase(); // ATRIBUINDO CAIXA ALTA NA VARIAVEL CONTEUDO
- if (conteudo.substring(1) == "B0 7D E0 87") //UID 1 - CHAVEIRO. SE O VALOR RETORNADO FOR ESSE A FUNÇÃO SETLOCKED SERÁ ACIONADA COMO FALSE QUE INDICA A PORTA ABERTA
- {
- setLocked(false); // CHAMANDO A FUNÇÃO SETLOCKED COMO FALSE
- } // FIM IF
- if (conteudo.substring(1) == "1B 8D B1 AB") //UID 2 - CARTÃO. SE O VALOR RETORNADO FOR ESSE A FUNÇÃO SETLOCKED SERÁ ACIONADA COMO FALSE QUE INDICA A PORTA ABERTA
- {
- setLocked(false); // CHAMANDO A FUNÇÃO SETLOCKED COMO FALSE
- } // FIM IF
- } // FIM LOOP
- void setLocked(int locked){ //INICIO DA FUNÇÃO SETLOCKED QUE TRATA O ESTADO DA FECHADURA
- if (locked){ //SE FECHADURA TRANCADA, FAZ
- lcd.clear(); // LIMPA A TELA DO LCD
- digitalWrite(ledVermelho, HIGH); // LIGA O LED VERMELHO
- digitalWrite(ledAzul, LOW); // APAGA O LED AZUL
- servo_Motor.write(0); //POSIÇÃO DO SERVO FICA EM 0º
- lcd.setBacklight(HIGH); // ACENDE O FUNDO DA TELA LCD
- lcd.setCursor(0,0); // ACIONA A PRIMERA LINHA DA TELA LCD
- lcd.print(" PORTA FECHADA!"); // ESCREVE NA PRIMEIRA LINHA A FRASE
- tone(speakerPin, 3000); // ACIONA O SPEAKER COM O TOM AGUDO 3000
- delay(500); //ESPERA 0.5 SEC
- tone(speakerPin,1500); // ACIONA O SPEAKER COM O TOM AGUDO 1500
- delay(500); // ESPERA 0.5 SEC
- tone(speakerPin, 1000); // ACIONA O SPEAKER COM O TOM AGUDO 1000
- delay(500); // ESPERA 0.5 SEC
- noTone(speakerPin); // PARA DE APITAR O SPEAKER
- } // FIM IF
- else { // SE NÃO
- lcd.clear(); // LIMPA TELA LCD
- digitalWrite(ledAzul, HIGH); // ACENDE LED AZUL
- digitalWrite(ledVermelho, LOW); // DESLIGA LED VERMELHO
- servo_Motor.write(90);// SERVO GIRA A 90º
- lcd.setBacklight(HIGH); // ACENDE O FUNDO DA TELA LCD
- lcd.setCursor(0,0); // CHAMA A PRIMERA LINHA DA TELA LCD
- lcd.print(" PORTA ABERTA "); // ESCREVE NA PRIMEIRA LINHA A FRASE
- lcd.setCursor(0,1); // CHAMA A SEGUNDA LINHA DA TELA LCD
- lcd.print("WWW.CODFY.COM.BR"); // ESCREVE NA SEGUNDA LINHA A FRASE
- tone(speakerPin, 1000); // ACIONA O SPEAKER COM O TOM AGUDO 1000
- delay(500); // ESPERA 0.5 SEC
- tone(speakerPin,1500); // ACIONA O SPEAKER COM O TOM AGUDO 1500
- delay(500); // ESPERA 0.5 SEC
- tone(speakerPin, 3000); // ACIONA O SPEAKER COM O TOM AGUDO 3000
- delay(500); // ESPERA 0.5 SEC
- noTone(speakerPin); // PARA DE APITAR O SPEAKER
- delay(3000); // ESPERA 3SEC
- setLocked(true); // CHAMA A FUNÇÃO COMO TRUE 'FECHANDO A PORTA'
- } //FIM SENÃO
- } // FIM SETLOCKED
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement