Advertisement
Guest User

robson

a guest
Nov 19th, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.55 KB | None | 0 0
  1.  
  2. #include <SPI.h>
  3. #include <MFRC522.h>
  4.  
  5. #define SS_PIN 10
  6. #define RST_PIN 1
  7. MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
  8.  
  9. char st[20];
  10.  
  11. volatile int passouCartao = 0;
  12. int carRed = 7; // estabelece o semáforo para carros
  13. int carYellow = 6;
  14. int carGreen = 5;
  15. int pedRed = 4; // estabelece o semáforo para pedestres
  16. int pedGreen = 3;
  17. int button = 2; // pino do botão
  18. int ok = 9; // está tudo OK para atravesar
  19. int rfidGDS = 8;
  20. int crossTime = 5000; //(5 segundos)
  21. unsigned long changeTime; // tempo desde que o botão foi pressionado
  22.  
  23. //wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
  24.  
  25. void interrupcao(){
  26. digitalWrite (rfidGDS, HIGH);
  27. passouCartao = 1;
  28. }
  29.  
  30. void setup() {
  31.  
  32. pinMode(ok, OUTPUT);
  33. pinMode(carRed, OUTPUT);
  34. pinMode(carYellow, OUTPUT);
  35. pinMode(carGreen, OUTPUT);
  36. pinMode(pedRed, OUTPUT);
  37. pinMode(pedGreen, OUTPUT);
  38. pinMode(rfidGDS, OUTPUT);
  39. pinMode(button, INPUT_PULLUP); // botão no pino 2
  40.  
  41. digitalWrite(ok, LOW);
  42.  
  43. // acende a luz verde (carros) e vermelha (pedestre)
  44. attachInterrupt(0,interrupcao,CHANGE); //Configurando a interrupção, 0 é pino 2 do UNO
  45.  
  46. Serial.begin(9600); // Inicia a serial
  47. SPI.begin(); // Inicia SPI bus
  48. mfrc522.PCD_Init(); // Inicia MFRC522
  49. Serial.println("Aproxime o seu cartao do leitor...");
  50. Serial.println();
  51.  
  52. }
  53.  
  54. //wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
  55.  
  56. void loop() {
  57. digitalWrite(ok, LOW);
  58. digitalWrite(carGreen, HIGH);
  59. digitalWrite(pedRed, HIGH);
  60. delay(5000);
  61. digitalWrite(carGreen, LOW);
  62. digitalWrite(carYellow, HIGH);
  63. delay(3000);
  64. digitalWrite(carYellow, LOW);
  65. digitalWrite(carRed, HIGH);
  66. delay(2000);
  67. digitalWrite(pedRed, LOW); // apaga o vermelho dos pedestres
  68. digitalWrite(pedGreen, HIGH); // acende o verde dos pedestres
  69. delay(crossTime); // espera por um intervalo de tempo predefinido (variável = 5seg)
  70. // pisca o verde dos pedestres
  71. digitalWrite(pedGreen, LOW);
  72. for (int x=0; x<10; x++) {
  73. digitalWrite(pedRed, HIGH);
  74. delay(250);
  75. digitalWrite(pedRed, LOW);
  76. delay(250);
  77. digitalWrite(pedGreen, LOW);
  78. }
  79. // acende o vermelho dos pedestres
  80.  
  81. digitalWrite(pedRed, HIGH);
  82. delay(1000);
  83. digitalWrite(carRed, LOW);
  84.  
  85. if (passouCartao == 1){
  86. dezSeg();
  87. }
  88. }
  89.  
  90. void dezSeg() {
  91.  
  92. digitalWrite(ok, HIGH);
  93. digitalWrite(carGreen, HIGH);
  94. digitalWrite(pedRed, HIGH);
  95. delay(5000);
  96. digitalWrite(carGreen, LOW);
  97. digitalWrite(carYellow, HIGH);
  98. delay(3000);
  99. digitalWrite(carYellow, LOW);
  100. digitalWrite(carRed, HIGH);
  101. delay(2000);
  102. digitalWrite(pedRed, LOW); // apaga o vermelho dos pedestres
  103. digitalWrite(pedGreen, HIGH); // acende o verde dos pedestres
  104. delay(15000); // espera por um intervalo de tempo predefinido (variável = 5seg)
  105. // pisca o verde dos pedestres
  106. digitalWrite(pedGreen, LOW);
  107. for (int x=0; x<10; x++) {
  108. digitalWrite(pedRed, HIGH);
  109. delay(250);
  110. digitalWrite(pedRed, LOW);
  111. delay(250);
  112. digitalWrite(pedGreen, LOW);
  113. }
  114. // acende o vermelho dos pedestres
  115.  
  116. digitalWrite(pedRed, HIGH);
  117. delay(1000);
  118.  
  119. digitalWrite(ok, LOW);
  120. digitalWrite(rfidGDS, LOW);
  121. delay(250);
  122. digitalWrite(rfidGDS, HIGH);
  123. delay(250);
  124. digitalWrite(rfidGDS, LOW);
  125. delay(250);
  126. digitalWrite(rfidGDS, HIGH);
  127. delay(250);
  128. digitalWrite(rfidGDS, LOW);
  129.  
  130. digitalWrite(carRed, LOW);
  131.  
  132. // registra o tempo desde a última alteração no semáforo
  133. changeTime = millis();
  134. // depois retorna para o loop principal do programa
  135. passouCartao = 0;
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement