Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //------------Semaforo 1------------------------------
- int pinVermelho = 18; //LED VERMELHO
- int pinAmarelo = 17; //LED AMARELO
- int pinVerde = 16; //LED VERMELHO
- int pinBotao = 7; //botao que ativa o led azul
- int pinPedestreVermelho = 20; //LED VERMELHO PEDESTRE
- int pinPedestreVerde = 19; //LED VERDE PEDESTRE
- int pinAzul = 21; // led azul
- int sensorPin = 9; //botao que vai simular um sensor que vai contar a quantidade de carros
- //----------------SEMAFORO 2--------------------------
- int pinVermelho_2 = 24;
- int pinAmarelo_2 = 23;
- int pinVerde_2 = 22;
- int pinBotao_2 = 6;
- int pinPedestreVermelho_2 =26 ;
- int pinPedestreVerde_2 = 25;
- int pinAzul_2 = 27;
- int sensorPin_2 = 10;
- //--------------------------SENSOR(botao que simula)--------------------------
- const unsigned long T = 500; //Período em [ms]
- unsigned long t0 = 0; //tempo inicial
- int n_pulsos = 0; //faz a contagem
- //------------------------Variaveis para ativar o sinal azul-------------------------
- int bot_Semaforo = 0; //botao que ativa o led azul quando o sinal estiver vermelho
- int bot_Semaforo_2 = 0;
- int cont_Azul = 0; //variavel que guarda informação do botao
- int cont_Azul_2 = 0;
- //--------------------------- Variaveis de tempo ---------------------------
- unsigned long intervaloVD = 1000; //intervalo VERDE
- unsigned long intervaloAM = 500; //intervalo AMARELO
- unsigned long intervaloVM = 1000; // intervalo Vermelho
- unsigned long intervaloAz;
- unsigned long faseVD = 0; //variavel do tempo
- unsigned long faseAM = 0;
- unsigned long faseVM = 0;
- void setup()
- {
- //------------------------SEMAFORO 1--------------------------------------
- pinMode(pinVerde, OUTPUT);
- pinMode(pinAmarelo, OUTPUT);
- pinMode(pinVermelho, OUTPUT);
- pinMode(pinBotao, INPUT_PULLUP);
- pinMode(pinPedestreVerde, OUTPUT);
- pinMode(pinPedestreVermelho, OUTPUT);
- pinMode(pinAzul, OUTPUT);
- pinMode(sensorPin, INPUT_PULLUP); //botao simula o sensor
- //-------------------------SEMAFORO 2------------------------------------
- pinMode(pinVerde_2, OUTPUT);
- pinMode(pinAmarelo_2, OUTPUT);
- pinMode(pinVermelho_2, OUTPUT);
- pinMode(pinBotao_2, INPUT_PULLUP);
- pinMode(pinPedestreVerde_2, OUTPUT);
- pinMode(pinPedestreVermelho_2, OUTPUT);
- pinMode(pinAzul_2, OUTPUT);
- pinMode(sensorPin_2, INPUT_PULLUP); //botao simula sensor
- //-------------------------------------(configuração inicial dos leds)-----------------
- digitalWrite(pinVerde, HIGH); //acende led verde
- digitalWrite(pinAmarelo, LOW); //acende led amarelo
- digitalWrite(pinVermelho, LOW); //acende led vermelho
- digitalWrite(pinPedestreVermelho,HIGH); // acende led vermelho pedestre
- digitalWrite(pinAzul, LOW);
- //-------SEGUNDO SEMAFORO----------------------
- digitalWrite(pinVerde_2, LOW);
- digitalWrite(pinAmarelo_2, LOW);
- digitalWrite(pinVermelho_2, HIGH);
- digitalWrite(pinPedestreVerde_2, HIGH);
- digitalWrite(pinAzul_2,LOW);
- }
- void loop()
- {
- //-----------------------sensor 1 (simulação)--------------------
- t0 = millis(); //tempo inicial
- n_pulsos = 0;
- while((millis() - t0) <= T) //ler os pulsos em um tempo T
- {
- if(digitalRead(sensorPin) == LOW)
- n_pulsos++; //faz a contagem
- delay(200);
- }
- // --------------------- sensor 2 (simulação)----------------------------------------
- //---------------------------LOGICA DOS SEMAFOROS-------------------------------------
- if (millis() - faseVM > intervaloVM) //QUANDO SINAL ESTIVER VERDE
- {
- digitalWrite(pinVerde, HIGH);
- digitalWrite(pinAmarelo, LOW);
- digitalWrite(pinVermelho, LOW);
- digitalWrite(pinPedestreVerde, LOW);
- digitalWrite(pinPedestreVermelho, HIGH);
- digitalWrite(pinAzul, LOW);
- // --------------------------------------------------
- digitalWrite(pinVerde_2, LOW);
- digitalWrite(pinAmarelo_2, LOW);
- digitalWrite(pinVermelho_2, HIGH);
- digitalWrite(pinPedestreVerde_2, HIGH);
- digitalWrite(pinPedestreVermelho_2, LOW);
- digitalWrite(pinAzul_2, LOW);
- delay(500);
- if(n_pulsos > 9)
- delay(1000);
- }
- if (millis() - faseVD > intervaloVD) //SEMAFORO AMARELO
- {
- digitalWrite(pinVerde, LOW);
- digitalWrite(pinAmarelo, HIGH);
- digitalWrite(pinVermelho, LOW);
- digitalWrite(pinPedestreVerde, LOW);
- digitalWrite(pinPedestreVermelho_2, HIGH);
- digitalWrite(pinVermelho, LOW);
- digitalWrite(pinAzul, LOW);
- //--------------------------------------------------
- digitalWrite(pinVerde_2, LOW);
- digitalWrite(pinAmarelo_2, LOW);
- digitalWrite(pinVermelho_2, HIGH);
- digitalWrite(pinPedestreVerde_2, HIGH);
- digitalWrite(pinPedestreVermelho_2, LOW);
- digitalWrite(pinAzul_2, LOW);
- delay(250);
- }
- if (millis() - faseAM > intervaloAM) //SEMAFORO FECHADO (VERMELHO)
- {
- digitalWrite(pinVerde, LOW);
- digitalWrite(pinAmarelo, LOW);
- digitalWrite(pinVermelho, HIGH);
- digitalWrite(pinPedestreVerde, HIGH);
- digitalWrite(pinPedestreVermelho, LOW);
- digitalWrite(pinAzul, LOW);
- //-----------------------------------------------------
- digitalWrite(pinVerde_2, HIGH);
- digitalWrite(pinAmarelo_2, LOW);
- digitalWrite(pinVermelho_2, LOW);
- digitalWrite(pinPedestreVerde_2, LOW);
- digitalWrite(pinPedestreVermelho_2, HIGH);
- digitalWrite(pinAzul_2, LOW);
- delay(500);
- }
- if (millis() - faseVD > intervaloVD) //SEMAFORO AMARELO 2
- {
- digitalWrite(pinVerde, LOW);
- digitalWrite(pinAmarelo, LOW);
- digitalWrite(pinVermelho, HIGH);
- digitalWrite(pinPedestreVerde, HIGH);
- digitalWrite(pinPedestreVermelho, LOW);
- digitalWrite(pinAzul, LOW);
- //--------------------------------------------------
- digitalWrite(pinVerde_2, LOW);
- digitalWrite(pinAmarelo_2, HIGH);
- digitalWrite(pinVermelho_2, LOW);
- digitalWrite(pinPedestreVerde_2, LOW);
- digitalWrite(pinPedestreVermelho_2, HIGH);
- digitalWrite(pinAzul_2, LOW);
- delay(250);
- }
- //-----------------------------------------semaforo azul 1--------------------------------------------
- if(digitalRead(pinBotao) == LOW) //Se o botão do semaforo for pressionado
- {
- bot_Semaforo++;
- delay(300);
- }
- if(bot_Semaforo != 0) //Se diferente de zero
- {
- digitalWrite(pinAzul, HIGH);
- delay(1000);
- digitalWrite(pinAzul,LOW);
- bot_Semaforo = 0;
- digitalWrite(pinVerde, LOW);
- digitalWrite(pinAmarelo, LOW);
- digitalWrite(pinVermelho, LOW);
- digitalWrite(pinPedestreVerde, HIGH);
- digitalWrite(pinPedestreVermelho, LOW);
- //-----------------------------------------------------
- digitalWrite(pinVerde_2, HIGH);
- digitalWrite(pinAmarelo_2, LOW);
- digitalWrite(pinVermelho_2, LOW);
- digitalWrite(pinPedestreVerde_2, LOW);
- digitalWrite(pinPedestreVermelho_2, HIGH);
- delay(500);
- }
- //------------------------------------------semaforo azul 2----------------------------
- if(digitalRead(pinBotao_2) == LOW) //Se o botão do semaforo for pressionado
- {
- bot_Semaforo_2++;
- delay(300);
- }
- if(bot_Semaforo_2 != 0) // diferente de zero
- {
- digitalWrite(pinAzul_2, HIGH);
- delay(1000);
- digitalWrite(pinAzul_2, LOW);
- bot_Semaforo_2 = 0;
- digitalWrite(pinVerde, HIGH);
- digitalWrite(pinAmarelo, LOW);
- digitalWrite(pinVermelho, LOW);
- digitalWrite(pinPedestreVerde, LOW);
- digitalWrite(pinPedestreVermelho, HIGH);
- //-----------------------------------------------------
- digitalWrite(pinVerde_2, HIGH);
- digitalWrite(pinAmarelo_2, LOW);
- digitalWrite(pinVermelho_2, LOW);
- digitalWrite(pinPedestreVerde_2, HIGH);
- digitalWrite(pinPedestreVermelho_2, LOW);
- delay(500);
- }
- }
Add Comment
Please, Sign In to add comment