Guest User

Untitled

a guest
Jul 21st, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.07 KB | None | 0 0
  1. #include <Wire.h> //INCLUSÃO DE BIBLIOTECA
  2. #include <LiquidCrystal.h> //INCLUSÃO DE BIBLIOTECA
  3. #include <SPI.h> //INCLUSÃO DE BIBLIOTECA
  4. #include <MFRC522.h> //INCLUSÃO DE BIBLIOTECA
  5. #include <Servo.h> //INCLUSÃO DE BIBLIOTECA
  6.  
  7. /*ARDUNIO MEGA Pin
  8. *MFRC522;
  9. *RST/Reset(RST): 49
  10. *SPI SDA: 53
  11. *SPI MOSI: 51
  12. *SPI MISO: 50
  13. *SPI SCK:52
  14. */
  15.  
  16. #define SS_PIN 49 //PINO SDA
  17. #define RST_PIN 53 //PINO DE RESET
  18.  
  19. MFRC522 rfid(SS_PIN, RST_PIN); //PASSAGEM DE PARÂMETROS REFERENTE AOS PINOS
  20.  
  21. const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
  22. LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
  23.  
  24. char st[20];
  25.  
  26. Servo s; //OBJETO DO TIPO SERVO
  27. int pos; //POSIÇÃO DO SERVO
  28.  
  29. const int pinoLedVerde = 2; //PINO DIGITAL REFERENTE AO LED VERDE
  30. const int pinoLedVermelho = 3; //PINO DIGITAL REFERENTE AO LED VERMELHO
  31. const int pinoServo = 6; // PINO DIGITAL REFERENTE AO SERVO MOTOR
  32.  
  33. byte anguloCancelaFechada = 74; //VALOR DO ÂNGULO PARA CANCELA FECHADA
  34. byte anguloCancelaAberta = 174; //VALOR DO ÂNGULO PARA CANCELA ABERTA
  35.  
  36. void setup(){
  37.  
  38. Wire.begin(); //INICIALIZA A BIBLIOTECA WIRE
  39. Serial.println("Aproxime o seu cartao do leitor...");
  40. Serial.println();
  41. //Define o número de colunas e linhas do LCD:
  42. lcd.begin(16, 2);
  43. mensageminicial();
  44.  
  45. SPI.begin(); //INICIALIZA O BARRAMENTO SPI
  46. rfid.PCD_Init(); //INICIALIZA MFRC522
  47.  
  48. s.attach(pinoServo); //ASSOCIAÇÃO DO PINO DIGITAL AO OBJETO DO TIPO SERVO
  49. s.write(74); //INICIA O MOTOR NA POSIÇÃO 0º
  50.  
  51. pinMode(pinoLedVerde, OUTPUT); //DEFINE O PINO COMO SAÍDA
  52. pinMode(pinoLedVermelho, OUTPUT); //DEFINE O PINO COMO SAÍDA
  53.  
  54. digitalWrite(pinoLedVerde, LOW); //LED INICIA DESLIGADO
  55. digitalWrite(pinoLedVermelho, LOW); //LED INICIA DESLIGADO
  56. }
  57.  
  58. void loop() {
  59. leituraRfid(); //CHAMA A FUNÇÃO RESPONSÁVEL PELA VALIDAÇÃO DA TAG RFID
  60. }
  61.  
  62. //FUNÇÃO DE VALIDAÇÃO DA TAG RFID
  63. void leituraRfid(){
  64. 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
  65. return; //RETORNA PARA LER NOVAMENTE
  66.  
  67. lcd.clear(); //LIMPA AS INFORMAÇÕES DO DISPLAY
  68. lcd.setCursor(0,1); //POSIÇÃO EM QUE O CURSOR IRÁ FAZER A ESCRITA
  69. lcd.print("Aguarde por favor..."); //ESCREVE O TEXTO NO DISPLAY
  70. delay(4000); //INTERVALO DE 4 SEGUNDOS
  71.  
  72. /***INICIO BLOCO DE CÓDIGO RESPONSÁVEL POR GERAR A TAG RFID LIDA***/
  73. String strID = "";
  74. for (byte i = 0; i < 4; i++) {
  75. strID +=
  76. (rfid.uid.uidByte[i] < 0x10 ? "0" : "") +
  77. String(rfid.uid.uidByte[i], HEX) +
  78. (i!=3 ? ":" : "");
  79. }
  80. strID.toUpperCase();
  81. /***FIM DO BLOCO DE CÓDIGO RESPONSÁVEL POR GERAR A TAG RFID LIDA***/
  82.  
  83. //O ENDEREÇO "D0:64:BB:4F" DEVERÁ SER ALTERADO PARA O ENDEREÇO DA SUA TAG RFID
  84. if (strID.indexOf("D0:64:BB:4F") >= 0) { //SE O ENDEREÇO DA TAG LIDA FOR IGUAL AO ENDEREÇO INFORMADO, FAZ
  85. digitalWrite(pinoLedVerde, HIGH); //LIGA O LED VERDE
  86. Serial.println("Olá, Seja bem vindo!");
  87. Serial.println();
  88. lcd.clear(); //LIMPA AS INFORMAÇÕES DO DISPLAY
  89. lcd.setCursor(0,0); //POSIÇÃO EM QUE O CURSOR IRÁ FAZER A ESCRITA
  90. lcd.print("Ola Fulano de tal"); //ESCREVE O TEXTO NO DISPLAY
  91. lcd.setCursor(0,1); //POSIÇÃO EM QUE O CURSOR IRÁ FAZER A ESCRITA
  92. lcd.print("Acesso Autorizado!"); //ESCREVE O TEXTO NO DISPLAY
  93. delay(4000); //INTERVALO DE 4 SEGUNDOS
  94. abrirCancela(); //CHAMA A FUNÇÃO RESPONSÁVEL POR ABRIR A CANCELA
  95. delay(6000); //INTERVALO DE 6 SEGUNDOS
  96. fecharCancela(); //CHAMA A FUNÇÃO RESPONSÁVEL POR FECHAR A CANCELA
  97. digitalWrite(pinoLedVerde, LOW); //DESLIGA O LED VERDE
  98. mensageminicial();
  99. }else{ //SENÃO, FAZ (CASO A TAG LIDA NÃO SEJÁ VÁLIDA)
  100. digitalWrite(pinoLedVermelho, HIGH); //LIGA O LED VERMELHO
  101. lcd.clear(); //LIMPA AS INFORMAÇÕES DO DISPLAY
  102. lcd.setCursor(0,0); //POSIÇÃO EM QUE O CURSOR IRÁ FAZER A ESCRITA
  103. lcd.print("Acesso Negado"); //ESCREVE O TEXTO NO DISPLAY
  104. delay(6000); ////INTERVALO DE 6 SEGUNDOS
  105. digitalWrite(pinoLedVermelho, LOW); //DESLIGA O LED VERDE
  106. lcd.clear(); //LIMPA AS INFORMAÇÕES DO DISPLAY
  107. mensageminicial();
  108. }
  109.  
  110. rfid.PICC_HaltA(); //PARADA DA LEITURA DO CARTÃO
  111. rfid.PCD_StopCrypto1(); //PARADA DA CRIPTOGRAFIA NO PCD
  112. }
  113.  
  114. //FUNÇÃO PARA ABRIR A CANCELA
  115. void abrirCancela(){
  116. for(pos = anguloCancelaFechada; pos < anguloCancelaAberta; pos++){ //PARA "pos" IGUAL A "anguloCancelaFechada",
  117. //ENQUANTO "pos" MENOR QUE "anguloCancelaAberta", INCREMENTA "pos"
  118. s.write(pos); //ESCREVE O VALOR DA POSIÇÃO QUE O SERVO DEVE GIRAR
  119. delay(15); //INTERVALO DE 15 MILISEGUNDOS
  120. }
  121. }
  122.  
  123. //FUNÇÃO PARA FECHAR A CANCELA
  124. void fecharCancela(){ //
  125. for(pos = anguloCancelaAberta; pos >= anguloCancelaFechada; pos--){ //PARA "pos" IGUAL A "anguloCancelaAberta",
  126. //ENQUANTO "pos" MAIOR OU IGUAL "anguloCancelaFechada", DECREMENTA "pos"
  127. s.write(pos); //ESCREVE O VALOR DA POSIÇÃO QUE O SERVO DEVE GIRAR
  128. delay(15); //INTERVALO DE 15 MILISEGUNDOS
  129. }
  130. mensageminicial();
  131. }
  132.  
  133. //FUNÇÃO PARA MENSAGEM INICIAL DO DISPLAY
  134. void mensageminicial()
  135. {
  136. lcd.clear();
  137. lcd.setCursor(0,0);
  138. lcd.print(" Aproxime o seu");
  139. lcd.setCursor(0,1);
  140. lcd.print("cartao do leitor");
  141. }
Add Comment
Please, Sign In to add comment