Advertisement
Guest User

Untitled

a guest
Feb 26th, 2019
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.09 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement