// VARIÁVEIS DE TEMPO ........................................................
unsigned long millisTarefa1 = millis();
unsigned long millisTarefa2 = millis();
unsigned long tempo1 = millis();
unsigned long tempo2 = millis();
unsigned long duration1= millis();
unsigned long duration2= millis();
// TEMPO DOS FAROIS ..................................................................
int BT = 1000;// BASE DE TEMPO
int VerdeB = 5 * BT; //50
int LaranjaB = 2 * BT; //80
int VerdeA = 3 * BT;
int LaranjaA = 1 * BT;
int VermelhoA = VerdeB + LaranjaB + 2*BT;
// int VermelhoB = VerdeA + LaranjaA + 2*BT; //140
int VermelhoB = 6*BT;
// VARIAVEIS DOS SEMAFOROS A e B............................................
int verdeAP=26;
int laranjaAP=25;
int vermelhoAP=33;
int verdeBP=12;
int laranjaBP=14;
int vermelhoBP=27;
// VARIAVEIS DOS SENSORES 1 e 2..............................................
int echo1=13;
// INICIO DO SEPTUP..................................................................
// Inicia comunicação na porta serial
Serial.begin(9600);
// Define pinos dos leds como saída
pinMode(echo1, INPUT);
pinMode(verdeBP, OUTPUT);
pinMode(laranjaBP, OUTPUT);
pinMode(vermelhoBP, OUTPUT);
pinMode(laranjaAP, OUTPUT);
pinMode(verdeAP, OUTPUT);
pinMode(vermelhoAP, OUTPUT);
}// FIM DO LAÇO void setup(){.........................................................
//ROTINA SEMÁFORO B......................................................................
void loop() {
tempo1 = millis()-millisTarefa1;
if(tempo1 <= VerdeB) //Tempo do farol VERDE = 1500ms.........................
{ digitalWrite(verdeBP, HIGH);
digitalWrite(laranjaBP, LOW);
digitalWrite(vermelhoBP, LOW);
digitalWrite(vermelhoAP, HIGH);
digitalWrite(laranjaAP, LOW);
digitalWrite(verdeAP, LOW); }
if((tempo1>VerdeB)&&(tempo1<=(VerdeB+LaranjaB))){
digitalWrite(verdeBP, LOW);
digitalWrite(laranjaBP, HIGH);}
if(( tempo1 > VerdeB+LaranjaB)&&(tempo1<=(VerdeB+LaranjaB+ BT))){
digitalWrite(laranjaBP, LOW);
digitalWrite(vermelhoBP, HIGH);} //VERMELHO B
if(( tempo1 > (VerdeB+LaranjaB+ BT))&&(tempo1<=(VerdeB+LaranjaB+ BT+VerdeA))){
digitalWrite(vermelhoAP, LOW);//VERMELHO A LOW
digitalWrite(verdeAP, HIGH);}
if(( tempo1 > (VerdeB+LaranjaB+ BT+VerdeA))&&(tempo1<=(VerdeB+LaranjaB+BT+VerdeA+LaranjaA))){
digitalWrite(verdeAP, LOW);
digitalWrite(laranjaAP, HIGH);}
if(( tempo1 > (VerdeB+LaranjaB+BT+VerdeA + LaranjaA ))&&(tempo1<=(VerdeB+LaranjaB+ BT+VerdeA+LaranjaA+BT))){
digitalWrite(laranjaAP, LOW);
digitalWrite(vermelhoAP, HIGH); }
//Tempo Total do SEMAFORO B = (1500Vd+500La+3000Vm) ms....................
if(tempo1>=(VerdeB+LaranjaB+ BT+VerdeA+LaranjaA+BT)){
digitalWrite(vermelhoBP, LOW);
digitalWrite(verdeBP, HIGH);
millisTarefa1 = millis(); }
// put your main code here, to run repeatedly:
//delay(10); // this speeds up the simulation
}