Guest User

SEMAFORO ARDUINO

a guest
Nov 22nd, 2019
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.82 KB | None | 0 0
  1.  
  2.  
  3. //------------Semaforo 1------------------------------
  4. int pinVermelho = 18; //LED VERMELHO
  5. int pinAmarelo = 17; //LED AMARELO
  6. int pinVerde = 16; //LED VERMELHO
  7. int pinBotao = 7; //botao que ativa o led azul
  8. int pinPedestreVermelho = 20; //LED VERMELHO PEDESTRE
  9. int pinPedestreVerde = 19; //LED VERDE PEDESTRE
  10.  
  11. int pinAzul = 21; // led azul
  12. int sensorPin = 9; //botao que vai simular um sensor que vai contar a quantidade de carros
  13. //----------------SEMAFORO 2--------------------------
  14.  
  15. int pinVermelho_2 = 24;
  16. int pinAmarelo_2 = 23;
  17. int pinVerde_2 = 22;
  18. int pinBotao_2 = 6;
  19. int pinPedestreVermelho_2 =26 ;
  20. int pinPedestreVerde_2 = 25;
  21.  
  22. int pinAzul_2 = 27;
  23. int sensorPin_2 = 10;
  24. //--------------------------SENSOR(botao que simula)--------------------------
  25.  
  26.  
  27. const unsigned long T = 500; //Período em [ms]
  28.  
  29. unsigned long t0 = 0; //tempo inicial
  30. int n_pulsos = 0; //faz a contagem
  31.  
  32. //------------------------Variaveis para ativar o sinal azul-------------------------
  33.  
  34.  
  35. int bot_Semaforo = 0; //botao que ativa o led azul quando o sinal estiver vermelho
  36. int bot_Semaforo_2 = 0;
  37. int cont_Azul = 0; //variavel que guarda informação do botao
  38. int cont_Azul_2 = 0;
  39.  
  40.  
  41. //--------------------------- Variaveis de tempo ---------------------------
  42.  
  43. unsigned long intervaloVD = 1000; //intervalo VERDE
  44. unsigned long intervaloAM = 500; //intervalo AMARELO
  45. unsigned long intervaloVM = 1000; // intervalo Vermelho
  46. unsigned long intervaloAz;
  47.  
  48.  
  49. unsigned long faseVD = 0; //variavel do tempo
  50. unsigned long faseAM = 0;
  51. unsigned long faseVM = 0;
  52.  
  53.  
  54.  
  55. void setup()
  56. {
  57.  
  58. //------------------------SEMAFORO 1--------------------------------------
  59.  
  60. pinMode(pinVerde, OUTPUT);
  61. pinMode(pinAmarelo, OUTPUT);
  62. pinMode(pinVermelho, OUTPUT);
  63. pinMode(pinBotao, INPUT_PULLUP);
  64. pinMode(pinPedestreVerde, OUTPUT);
  65. pinMode(pinPedestreVermelho, OUTPUT);
  66. pinMode(pinAzul, OUTPUT);
  67.  
  68. pinMode(sensorPin, INPUT_PULLUP); //botao simula o sensor
  69. //-------------------------SEMAFORO 2------------------------------------
  70. pinMode(pinVerde_2, OUTPUT);
  71. pinMode(pinAmarelo_2, OUTPUT);
  72. pinMode(pinVermelho_2, OUTPUT);
  73. pinMode(pinBotao_2, INPUT_PULLUP);
  74. pinMode(pinPedestreVerde_2, OUTPUT);
  75. pinMode(pinPedestreVermelho_2, OUTPUT);
  76. pinMode(pinAzul_2, OUTPUT);
  77.  
  78. pinMode(sensorPin_2, INPUT_PULLUP); //botao simula sensor
  79.  
  80. //-------------------------------------(configuração inicial dos leds)-----------------
  81.  
  82. digitalWrite(pinVerde, HIGH); //acende led verde
  83. digitalWrite(pinAmarelo, LOW); //acende led amarelo
  84. digitalWrite(pinVermelho, LOW); //acende led vermelho
  85. digitalWrite(pinPedestreVermelho,HIGH); // acende led vermelho pedestre
  86. digitalWrite(pinAzul, LOW);
  87.  
  88. //-------SEGUNDO SEMAFORO----------------------
  89.  
  90. digitalWrite(pinVerde_2, LOW);
  91. digitalWrite(pinAmarelo_2, LOW);
  92. digitalWrite(pinVermelho_2, HIGH);
  93. digitalWrite(pinPedestreVerde_2, HIGH);
  94.  
  95. digitalWrite(pinAzul_2,LOW);
  96. }
  97.  
  98.  
  99. void loop()
  100. {
  101.  
  102. //-----------------------sensor 1 (simulação)--------------------
  103. t0 = millis(); //tempo inicial
  104. n_pulsos = 0;
  105.  
  106. while((millis() - t0) <= T) //ler os pulsos em um tempo T
  107. {
  108. if(digitalRead(sensorPin) == LOW)
  109. n_pulsos++; //faz a contagem
  110. delay(200);
  111. }
  112.  
  113. // --------------------- sensor 2 (simulação)----------------------------------------
  114.  
  115.  
  116.  
  117. //---------------------------LOGICA DOS SEMAFOROS-------------------------------------
  118.  
  119. if (millis() - faseVM > intervaloVM) //QUANDO SINAL ESTIVER VERDE
  120. {
  121.  
  122. digitalWrite(pinVerde, HIGH);
  123. digitalWrite(pinAmarelo, LOW);
  124. digitalWrite(pinVermelho, LOW);
  125.  
  126. digitalWrite(pinPedestreVerde, LOW);
  127. digitalWrite(pinPedestreVermelho, HIGH);
  128. digitalWrite(pinAzul, LOW);
  129.  
  130. // --------------------------------------------------
  131. digitalWrite(pinVerde_2, LOW);
  132. digitalWrite(pinAmarelo_2, LOW);
  133. digitalWrite(pinVermelho_2, HIGH);
  134.  
  135. digitalWrite(pinPedestreVerde_2, HIGH);
  136. digitalWrite(pinPedestreVermelho_2, LOW);
  137. digitalWrite(pinAzul_2, LOW);
  138.  
  139. delay(500);
  140.  
  141. if(n_pulsos > 9)
  142. delay(1000);
  143. }
  144.  
  145. if (millis() - faseVD > intervaloVD) //SEMAFORO AMARELO
  146. {
  147. digitalWrite(pinVerde, LOW);
  148. digitalWrite(pinAmarelo, HIGH);
  149. digitalWrite(pinVermelho, LOW);
  150.  
  151. digitalWrite(pinPedestreVerde, LOW);
  152. digitalWrite(pinPedestreVermelho_2, HIGH);
  153. digitalWrite(pinVermelho, LOW);
  154. digitalWrite(pinAzul, LOW);
  155. //--------------------------------------------------
  156.  
  157. digitalWrite(pinVerde_2, LOW);
  158. digitalWrite(pinAmarelo_2, LOW);
  159. digitalWrite(pinVermelho_2, HIGH);
  160.  
  161. digitalWrite(pinPedestreVerde_2, HIGH);
  162. digitalWrite(pinPedestreVermelho_2, LOW);
  163. digitalWrite(pinAzul_2, LOW);
  164.  
  165. delay(250);
  166.  
  167.  
  168. }
  169.  
  170. if (millis() - faseAM > intervaloAM) //SEMAFORO FECHADO (VERMELHO)
  171. {
  172. digitalWrite(pinVerde, LOW);
  173. digitalWrite(pinAmarelo, LOW);
  174. digitalWrite(pinVermelho, HIGH);
  175.  
  176. digitalWrite(pinPedestreVerde, HIGH);
  177. digitalWrite(pinPedestreVermelho, LOW);
  178. digitalWrite(pinAzul, LOW);
  179.  
  180. //-----------------------------------------------------
  181.  
  182. digitalWrite(pinVerde_2, HIGH);
  183. digitalWrite(pinAmarelo_2, LOW);
  184. digitalWrite(pinVermelho_2, LOW);
  185.  
  186. digitalWrite(pinPedestreVerde_2, LOW);
  187. digitalWrite(pinPedestreVermelho_2, HIGH);
  188. digitalWrite(pinAzul_2, LOW);
  189. delay(500);
  190.  
  191. }
  192. if (millis() - faseVD > intervaloVD) //SEMAFORO AMARELO 2
  193. {
  194. digitalWrite(pinVerde, LOW);
  195. digitalWrite(pinAmarelo, LOW);
  196. digitalWrite(pinVermelho, HIGH);
  197.  
  198. digitalWrite(pinPedestreVerde, HIGH);
  199. digitalWrite(pinPedestreVermelho, LOW);
  200. digitalWrite(pinAzul, LOW);
  201.  
  202. //--------------------------------------------------
  203.  
  204. digitalWrite(pinVerde_2, LOW);
  205. digitalWrite(pinAmarelo_2, HIGH);
  206. digitalWrite(pinVermelho_2, LOW);
  207.  
  208. digitalWrite(pinPedestreVerde_2, LOW);
  209. digitalWrite(pinPedestreVermelho_2, HIGH);
  210. digitalWrite(pinAzul_2, LOW);
  211.  
  212. delay(250);
  213.  
  214. }
  215. //-----------------------------------------semaforo azul 1--------------------------------------------
  216.  
  217. if(digitalRead(pinBotao) == LOW) //Se o botão do semaforo for pressionado
  218. {
  219. bot_Semaforo++;
  220. delay(300);
  221. }
  222. if(bot_Semaforo != 0) //Se diferente de zero
  223. {
  224. digitalWrite(pinAzul, HIGH);
  225. delay(1000);
  226. digitalWrite(pinAzul,LOW);
  227. bot_Semaforo = 0;
  228.  
  229. digitalWrite(pinVerde, LOW);
  230. digitalWrite(pinAmarelo, LOW);
  231. digitalWrite(pinVermelho, LOW);
  232.  
  233. digitalWrite(pinPedestreVerde, HIGH);
  234. digitalWrite(pinPedestreVermelho, LOW);
  235.  
  236. //-----------------------------------------------------
  237.  
  238. digitalWrite(pinVerde_2, HIGH);
  239. digitalWrite(pinAmarelo_2, LOW);
  240. digitalWrite(pinVermelho_2, LOW);
  241.  
  242. digitalWrite(pinPedestreVerde_2, LOW);
  243. digitalWrite(pinPedestreVermelho_2, HIGH);
  244.  
  245. delay(500);
  246.  
  247.  
  248. }
  249. //------------------------------------------semaforo azul 2----------------------------
  250.  
  251. if(digitalRead(pinBotao_2) == LOW) //Se o botão do semaforo for pressionado
  252. {
  253. bot_Semaforo_2++;
  254. delay(300);
  255. }
  256. if(bot_Semaforo_2 != 0) // diferente de zero
  257. {
  258. digitalWrite(pinAzul_2, HIGH);
  259. delay(1000);
  260. digitalWrite(pinAzul_2, LOW);
  261. bot_Semaforo_2 = 0;
  262.  
  263. digitalWrite(pinVerde, HIGH);
  264. digitalWrite(pinAmarelo, LOW);
  265. digitalWrite(pinVermelho, LOW);
  266.  
  267. digitalWrite(pinPedestreVerde, LOW);
  268. digitalWrite(pinPedestreVermelho, HIGH);
  269.  
  270. //-----------------------------------------------------
  271.  
  272. digitalWrite(pinVerde_2, HIGH);
  273. digitalWrite(pinAmarelo_2, LOW);
  274. digitalWrite(pinVermelho_2, LOW);
  275.  
  276. digitalWrite(pinPedestreVerde_2, HIGH);
  277. digitalWrite(pinPedestreVermelho_2, LOW);
  278.  
  279. delay(500);
  280. }
  281.  
  282. }
Add Comment
Please, Sign In to add comment