Advertisement
RuiViana

OMS_RFID

Jun 14th, 2016
249
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.84 KB | None | 0 0
  1.   /*
  2.   -------- CONTROLE DE ACESSO VIA RFID ------------
  3.   =================================================
  4.   ==   BLOG DA ROBOTICA - www.blogdarobotica.com ==
  5.   =================================================
  6.   Autor: Kleber Bastos
  7.   E-mail: contato@blogdarobotica.com
  8.   Fanpage: facebook.com/blogdarobotica
  9.   YouTube: youtube.com/user/blogdarobotica
  10.   */
  11.    
  12.   //Bibliotecas
  13.   #include <SPI.h>
  14.   #include <MFRC522.h>
  15.    
  16.   //Pinos
  17.   #define LED_VERDE 6
  18.   #define LED_VERMELHO 7
  19.   #define BUZZER 8
  20.   #define SS_PIN 10
  21.   #define RST_PIN 9
  22.    
  23.   String IDtag = ""; //Variável que armazenará o ID da Tag
  24.   bool Permitido = false; //Variável que verifica a permissão
  25.    
  26.   //Vetor responsável por armazenar os ID's das Tag's cadastradas
  27.   String TagsCadastradas[] = {"ID_1",
  28.                               "ID_2",
  29.                               "ID_3"};
  30.    
  31.   MFRC522 LeitorRFID(SS_PIN, RST_PIN);    // Cria uma nova instância para o leitor e passa os pinos como parâmetro
  32.  
  33.   byte  FlagTag = 0;
  34.  //---------------------------------
  35.   void setup()
  36.   {
  37.     Serial.begin(9600);             // Inicializa a comunicação Serial
  38.     SPI.begin();                    // Inicializa comunicacao SPI
  39.     LeitorRFID.PCD_Init();          // Inicializa o leitor RFID
  40.     pinMode(LED_VERDE, OUTPUT);     // Declara o pino do led verde como saída
  41.     pinMode(LED_VERMELHO, OUTPUT);  // Declara o pino do led vermelho como saída
  42.     pinMode(BUZZER, OUTPUT);        // Declara o pino do buzzer como saída
  43.     IDtag = ""; //Inicialmente IDtag deve estar vazia.  
  44.   }
  45.   //---------------------------------  
  46.   void loop()
  47.   {  
  48.     // Verifica se existe uma Tag presente
  49.     if ( !LeitorRFID.PICC_IsNewCardPresent() || !LeitorRFID.PICC_ReadCardSerial() )
  50.     {
  51.         delay(50);
  52.         IDtag = "";
  53.     }
  54.     //if(IDtag != "")
  55.     else
  56.     {
  57.       //Serial.println(IDtag);
  58.       // Pega o ID da Tag através da função LeitorRFID.uid e Armazena o ID na variável IDtag        
  59.       for (byte i = 0; i < LeitorRFID.uid.size; i++)
  60.       {        
  61.           IDtag.concat(String(LeitorRFID.uid.uidByte[i], HEX));
  62.           //Serial.println(IDtag);
  63.       }        
  64.       //Compara o valor do ID lido com os IDs armazenados no vetor TagsCadastradas[]
  65.       for (int i = 0; i < (sizeof(TagsCadastradas)/sizeof(String)); i++)
  66.       {
  67.         if(  IDtag.equalsIgnoreCase(TagsCadastradas[i])  )
  68.         {
  69.           Permitido = true; //Variável Permitido assume valor verdadeiro caso o ID Lido esteja cadastrado
  70.           FlagTag = !FlagTag;
  71.         }
  72.       }
  73.     }        
  74.     if((Permitido == true) &  (FlagTag == 0))
  75.     {
  76.       Serial.println("Tag Cadastrada: " + IDtag); //Exibe a mensagem "Tag Cadastrada" e o ID da tag não cadastrada
  77.       digitalWrite(LED_VERDE, HIGH);
  78.       int qtd_bips = 2; //definindo a quantidade de bips
  79.       for(int j=0; j<qtd_bips; j++)
  80.       {
  81.         //Ligando o buzzer com uma frequência de 1500 hz e ligando o led verde.
  82.         tone(BUZZER,1500);
  83.       }
  84.       Permitido = false;
  85.       IDtag = "";
  86.     }
  87.     if((Permitido == true) &  (FlagTag == 1))
  88.     {
  89.       Serial.println("Tag Cadastrada: " + IDtag); //Exibe a mensagem "Tag Cadastrada" e o ID da tag não cadastrada
  90.       digitalWrite(LED_VERDE, LOW);
  91.       Permitido = false;
  92.       IDtag = "";
  93.     }
  94.     if(IDtag != "")
  95.     {
  96.       if(Permitido != true)
  97.       {
  98.         acessoNegado(); //Se não será chamada a função acessoNegado()
  99.       }
  100.     }
  101.     delay(300); //aguarda 2 segundos para efetuar uma nova leitura
  102.   }
  103.   //---------------------------------
  104.   void acessoNegado()
  105.   {
  106.     Serial.println("Tag NAO Cadastrada: " + IDtag); //Exibe a mensagem "Tag NAO Cadastrada" e o ID da tag cadastrada
  107.     digitalWrite(LED_VERMELHO, HIGH);
  108.     delay(500);
  109.     digitalWrite(LED_VERMELHO, LOW);
  110.     delay(500);  
  111.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement