Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Wire.h> //INCLUSÃO DE BIBLIOTECA
- #include <LiquidCrystal.h> //INCLUSÃO DE BIBLIOTECA
- #include <SPI.h> //INCLUSÃO DE BIBLIOTECA
- #include <MFRC522.h> //INCLUSÃO DE BIBLIOTECA
- #include <Servo.h> //INCLUSÃO DE BIBLIOTECA
- /*ARDUNIO MEGA Pin
- *MFRC522;
- *RST/Reset(RST): 49
- *SPI SDA: 53
- *SPI MOSI: 51
- *SPI MISO: 50
- *SPI SCK:52
- */
- #define SS_PIN 49 //PINO SDA
- #define RST_PIN 53 //PINO DE RESET
- MFRC522 rfid(SS_PIN, RST_PIN); //PASSAGEM DE PARÂMETROS REFERENTE AOS PINOS
- const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
- LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
- char st[20];
- Servo s; //OBJETO DO TIPO SERVO
- int pos; //POSIÇÃO DO SERVO
- const int pinoLedVerde = 2; //PINO DIGITAL REFERENTE AO LED VERDE
- const int pinoLedVermelho = 3; //PINO DIGITAL REFERENTE AO LED VERMELHO
- const int pinoServo = 6; // PINO DIGITAL REFERENTE AO SERVO MOTOR
- byte anguloCancelaFechada = 74; //VALOR DO ÂNGULO PARA CANCELA FECHADA
- byte anguloCancelaAberta = 174; //VALOR DO ÂNGULO PARA CANCELA ABERTA
- void setup(){
- Wire.begin(); //INICIALIZA A BIBLIOTECA WIRE
- Serial.println("Aproxime o seu cartao do leitor...");
- Serial.println();
- //Define o número de colunas e linhas do LCD:
- lcd.begin(16, 2);
- mensageminicial();
- SPI.begin(); //INICIALIZA O BARRAMENTO SPI
- rfid.PCD_Init(); //INICIALIZA MFRC522
- s.attach(pinoServo); //ASSOCIAÇÃO DO PINO DIGITAL AO OBJETO DO TIPO SERVO
- s.write(74); //INICIA O MOTOR NA POSIÇÃO 0º
- pinMode(pinoLedVerde, OUTPUT); //DEFINE O PINO COMO SAÍDA
- pinMode(pinoLedVermelho, OUTPUT); //DEFINE O PINO COMO SAÍDA
- digitalWrite(pinoLedVerde, LOW); //LED INICIA DESLIGADO
- digitalWrite(pinoLedVermelho, LOW); //LED INICIA DESLIGADO
- }
- void loop() {
- leituraRfid(); //CHAMA A FUNÇÃO RESPONSÁVEL PELA VALIDAÇÃO DA TAG RFID
- }
- //FUNÇÃO DE VALIDAÇÃO DA TAG RFID
- void leituraRfid(){
- if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) //VERIFICA SE O CARTÃO PRESENTE NO LEITOR É DIFERENTE DO ÚLTIMO CARTÃO LIDO. CASO NÃO SEJA, FAZ
- return; //RETORNA PARA LER NOVAMENTE
- lcd.clear(); //LIMPA AS INFORMAÇÕES DO DISPLAY
- lcd.setCursor(0,1); //POSIÇÃO EM QUE O CURSOR IRÁ FAZER A ESCRITA
- lcd.print("Aguarde por favor..."); //ESCREVE O TEXTO NO DISPLAY
- delay(4000); //INTERVALO DE 4 SEGUNDOS
- /***INICIO BLOCO DE CÓDIGO RESPONSÁVEL POR GERAR A TAG RFID LIDA***/
- String strID = "";
- for (byte i = 0; i < 4; i++) {
- strID +=
- (rfid.uid.uidByte[i] < 0x10 ? "0" : "") +
- String(rfid.uid.uidByte[i], HEX) +
- (i!=3 ? ":" : "");
- }
- strID.toUpperCase();
- /***FIM DO BLOCO DE CÓDIGO RESPONSÁVEL POR GERAR A TAG RFID LIDA***/
- //O ENDEREÇO "D0:64:BB:4F" DEVERÁ SER ALTERADO PARA O ENDEREÇO DA SUA TAG RFID
- if (strID.indexOf("D0:64:BB:4F") >= 0) { //SE O ENDEREÇO DA TAG LIDA FOR IGUAL AO ENDEREÇO INFORMADO, FAZ
- digitalWrite(pinoLedVerde, HIGH); //LIGA O LED VERDE
- Serial.println("Olá, Seja bem vindo!");
- Serial.println();
- lcd.clear(); //LIMPA AS INFORMAÇÕES DO DISPLAY
- lcd.setCursor(0,0); //POSIÇÃO EM QUE O CURSOR IRÁ FAZER A ESCRITA
- lcd.print("Ola Fulano de tal"); //ESCREVE O TEXTO NO DISPLAY
- lcd.setCursor(0,1); //POSIÇÃO EM QUE O CURSOR IRÁ FAZER A ESCRITA
- lcd.print("Acesso Autorizado!"); //ESCREVE O TEXTO NO DISPLAY
- delay(4000); //INTERVALO DE 4 SEGUNDOS
- abrirCancela(); //CHAMA A FUNÇÃO RESPONSÁVEL POR ABRIR A CANCELA
- delay(6000); //INTERVALO DE 6 SEGUNDOS
- fecharCancela(); //CHAMA A FUNÇÃO RESPONSÁVEL POR FECHAR A CANCELA
- digitalWrite(pinoLedVerde, LOW); //DESLIGA O LED VERDE
- mensageminicial();
- }else{ //SENÃO, FAZ (CASO A TAG LIDA NÃO SEJÁ VÁLIDA)
- digitalWrite(pinoLedVermelho, HIGH); //LIGA O LED VERMELHO
- lcd.clear(); //LIMPA AS INFORMAÇÕES DO DISPLAY
- lcd.setCursor(0,0); //POSIÇÃO EM QUE O CURSOR IRÁ FAZER A ESCRITA
- lcd.print("Acesso Negado"); //ESCREVE O TEXTO NO DISPLAY
- delay(6000); ////INTERVALO DE 6 SEGUNDOS
- digitalWrite(pinoLedVermelho, LOW); //DESLIGA O LED VERDE
- lcd.clear(); //LIMPA AS INFORMAÇÕES DO DISPLAY
- mensageminicial();
- }
- rfid.PICC_HaltA(); //PARADA DA LEITURA DO CARTÃO
- rfid.PCD_StopCrypto1(); //PARADA DA CRIPTOGRAFIA NO PCD
- }
- //FUNÇÃO PARA ABRIR A CANCELA
- void abrirCancela(){
- for(pos = anguloCancelaFechada; pos < anguloCancelaAberta; pos++){ //PARA "pos" IGUAL A "anguloCancelaFechada",
- //ENQUANTO "pos" MENOR QUE "anguloCancelaAberta", INCREMENTA "pos"
- s.write(pos); //ESCREVE O VALOR DA POSIÇÃO QUE O SERVO DEVE GIRAR
- delay(15); //INTERVALO DE 15 MILISEGUNDOS
- }
- }
- //FUNÇÃO PARA FECHAR A CANCELA
- void fecharCancela(){ //
- for(pos = anguloCancelaAberta; pos >= anguloCancelaFechada; pos--){ //PARA "pos" IGUAL A "anguloCancelaAberta",
- //ENQUANTO "pos" MAIOR OU IGUAL "anguloCancelaFechada", DECREMENTA "pos"
- s.write(pos); //ESCREVE O VALOR DA POSIÇÃO QUE O SERVO DEVE GIRAR
- delay(15); //INTERVALO DE 15 MILISEGUNDOS
- }
- mensageminicial();
- }
- //FUNÇÃO PARA MENSAGEM INICIAL DO DISPLAY
- void mensageminicial()
- {
- lcd.clear();
- lcd.setCursor(0,0);
- lcd.print(" Aproxime o seu");
- lcd.setCursor(0,1);
- lcd.print("cartao do leitor");
- }
Add Comment
Please, Sign In to add comment