SHARE
TWEET

Untitled

a guest Feb 26th, 2019 75 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <SoftwareSerial.h>
  2. #include <SPI.h>
  3. #include <Ethernet.h>
  4. #include <EthernetUdp.h>
  5. #include <RDM6300.h>
  6.  
  7. //MAC Address da placa, configurável
  8. //DE-AD-BE-EF-FE-ED
  9. byte mac[] = {0xAF, 0xBE, 0xCD, 0xDC, 0xEB, 0xFA};
  10.  
  11. //Setando IP da shield
  12. IPAddress ip_placa(192, 168, 0, 185);
  13.  
  14. //IP do servidor 1
  15. IPAddress ip_server1(192, 168, 0 ,10);
  16.  
  17. //IP do servidor 2
  18. IPAddress ip_server2(192, 168, 0, 11);
  19.  
  20. //Protocolo UDP para enviar
  21. EthernetUDP Udp;
  22.  
  23. //LEITURA DO RFID
  24. SoftwareSerial mySerial(68, 69);
  25.  
  26. /***********************************/
  27. uint8_t Payload[6]; //used for read comparisons
  28. RDM6300 RDM6300(Payload);
  29. /***********************************/
  30.  
  31. #define _p1  22
  32. #define _p2  23
  33. #define _solenoide 31
  34.  
  35. //controle da solenoide
  36. unsigned long _ultimaAcionamento_p1 = 0;
  37. unsigned long _ultimaAcionamento_p2 = 0;
  38.  
  39. //ultima leitura do cartao
  40. unsigned long _ultimaLeitura = 0;
  41.  
  42. //quem fez o acionamento da botoeira
  43. int _portariaQueAcionou = 0;
  44.  
  45. void setup()
  46. {
  47.      Ethernet.begin(mac,ip_placa);
  48.      Udp.begin(7776);
  49.      
  50.      mySerial.begin(9600);
  51.      mySerial.setTimeout(100);
  52.  
  53.      //monitor
  54.      Serial.begin(9600);
  55.      
  56.      //Ativar o pino 4, isso ajuda a gerenciar a fila de pacotes UDP
  57.      pinMode(4,OUTPUT);
  58.      digitalWrite(4,HIGH);
  59.  
  60.      pinMode(_p1,INPUT);
  61.      pinMode(_p2,INPUT);  
  62.      pinMode(_solenoide,OUTPUT);
  63. }
  64.  
  65. void loop()
  66. {
  67.    /***************************************
  68.     * LIBERA A SOLENOIDE
  69.     */
  70.    if((digitalRead(_p1) == HIGH) && ((millis() - _ultimaAcionamento_p1) > 2000))
  71.    {
  72.       //ACIONA A SOLENOIDE PARA LIBERAR O CARTAO
  73.       Solenoide();
  74.  
  75.       //CONTROLA O TEMPO EM QUE SERÁ ACIONADA A SOLENOIDE
  76.       _ultimaAcionamento_p1 = millis();
  77.  
  78.       //GRAVA A ULTIMA VEZ QUE TEVE LEITURA
  79.       _ultimaLeitura = millis();
  80.  
  81.       //INDICA QUE ACIONOU, PORTARIA 1 OU 2
  82.       _portariaQueAcionou = 1;
  83.  
  84.       //EXIBE MENSAGEM
  85.       Serial.println("Acionado p1");
  86.    }
  87.    
  88.    if((digitalRead(_p2) == HIGH) && ((millis() - _ultimaAcionamento_p2) > 3000))
  89.    {
  90.        //ACIONA A SOLENOIDE PARA LIBERAR O CARTAO
  91.        Solenoide();
  92.  
  93.        //CONTROLA O TEMPO EM QUE SERÁ ACIONADA A SOLENOIDE
  94.        _ultimaAcionamento_p2 = millis();
  95.  
  96.        //GRAVA A ULTIMA VEZ QUE TEVE LEITURA
  97.       _ultimaLeitura = millis();
  98.  
  99.        //INDICA QUE ACIONOU, PORTARIA 1 OU 2
  100.       _portariaQueAcionou = 2;
  101.  
  102.       //EXIBE MSG
  103.       Serial.println("Acionado p2");
  104.    }
  105.    /*****************************************
  106.     * ATÉ AQUI
  107.     */
  108.  
  109.    /*****************************************
  110.     * FAZ A LEITURA DO CARTÃO DEPOIS DE 600 MS, CONTANTO DEPOIS QUE FOI ACIONADA A BOTOEIRA
  111.     */
  112.    if((_portariaQueAcionou == 1) && ((millis() - _ultimaLeitura) > 600))
  113.    {
  114.       _portariaQueAcionou = 0;
  115.      
  116.       //LE O CARTAO
  117.       String _cartao = LeCartao();
  118.      
  119.       if(_cartao == "")
  120.       {
  121.         Serial.println("---------");  
  122.       }
  123.       else
  124.       {
  125.         Serial.println(_cartao);
  126.       }
  127.      
  128.       EnviaCartao(ip_server1,_cartao);
  129.    }
  130.  
  131.    if((_portariaQueAcionou == 2) && ((millis() - _ultimaLeitura) > 600))
  132.    {
  133.       _portariaQueAcionou = 0;
  134.      
  135.       String _cartao = LeCartao();
  136.      
  137.       if(_cartao == "")
  138.       {
  139.         Serial.println("---------");  
  140.       }
  141.       else
  142.       {
  143.         Serial.println(_cartao);
  144.       }
  145.      
  146.       EnviaCartao(ip_server2,_cartao);
  147.    }
  148.    /*****************************************
  149.     * ATÉ AQUI
  150.     */
  151. }
  152.  
  153. void Solenoide()
  154. {
  155.   digitalWrite(_solenoide,HIGH);
  156.   delay(100);
  157.   digitalWrite(_solenoide,LOW);  
  158. }
  159.  
  160. String LeCartao()
  161. {
  162.   String _cartao;
  163.   String _cartaoChar;
  164.  
  165.   while (mySerial.available() > 0)
  166.   {          
  167.     uint8_t c = mySerial.read();
  168.    
  169.     if (RDM6300.decode(c))
  170.     {
  171.       for (int i = 0; i < 7; i++)
  172.       {
  173.         _cartao += String(Payload[i], HEX);
  174.       }
  175.     }
  176.   }
  177.    
  178.   return _cartao;
  179. }
  180.  
  181.  
  182. void EnviaCartao(IPAddress _ipServidor, String _cartao)
  183. {
  184.    if(_cartao != "")
  185.    {                
  186.       Udp.beginPacket(_ipServidor,12345);
  187.       Udp.print(_cartao);
  188.       Udp.endPacket();
  189.    }    
  190. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top