//Definição de saídas para os LEDs
int LED[2][3] = {{4,0,2},{5,17,16}};
//Definição de entrada do botão(pino 14)
int bot = 14;
//Definição das cores dos LEDs dependendo o momento
//verde color[0][0 a 2 para 3 valores]
//amarelo color[1][0 a 2 para 3 valores]
//vermelho color[2][0 a 2 para 3 valores]
int color[4][3] = {{0,255,0},{255,255,0},{255,0,0},{0,0,0}};
void setup() {
// put your setup code here, to run once:
//Definição de entradas e saídas
for(int i =0;i<=1;i++){
for(int j =0;j<=2;j++)pinMode(LED[i][j], OUTPUT);
}
}
void loop() {
// put your main code here, to run repeatedly:
int descarte;
int ref = millis();
do{
if(millis() - ref >= 0 && millis() - ref <= 1000)
{
for(int k = 0;k<=2;k++)digitalWrite(LED[0][k], color[0][k]);
for(int k = 0;k<=2;k++)digitalWrite(LED[1][k], color[0][k]);
}
if(millis() - ref >= 1000 && millis() - ref <= 2000){
for(int k = 0;k<=2;k++)digitalWrite(LED[0][k], color[1][k]);
for(int k = 0;k<=2;k++)digitalWrite(LED[1][k], color[1][k]);
}
if(millis() - ref >= 2000 && millis() - ref <= 3000){
for(int k = 0;k<=2;k++)digitalWrite(LED[0][k], color[2][k]);
for(int k = 0;k<=2;k++)digitalWrite(LED[1][k], color[2][k]);
}
if(!digitalRead(bot) == 1)
{
descarte = suspensao(0);
ref = millis();
for(int k = 0;k<=2;k++)digitalWrite(LED[0][k], color[3][k]);
for(int k = 0;k<=2;k++)digitalWrite(LED[1][k], color[3][k]);
while(!digitalRead(bot) == 1){
}
}
}while(millis() - ref <= 3000);
}
//modo de suspensão em que os semáforos alternam entre amarelo e desligado
int suspensao(int fdds){
int ref = millis();
boolean condicao = false;
for(int k = 0;k<=2;k++)digitalWrite(LED[0][k], color[3][k]);
for(int k = 0;k<=2;k++)digitalWrite(LED[1][k], color[3][k]);
while(!digitalRead(bot) == 1){
}
do{
if(millis() - ref >= 0 && millis() - ref <= 1000){
for(int k = 0;k<=2;k++)digitalWrite(LED[0][k], color[1][k]);
for(int k = 0;k<=2;k++)digitalWrite(LED[1][k], color[1][k]);
}
if(millis() - ref >= 1000 && millis() - ref <= 2000){
for(int k = 0;k<=2;k++)digitalWrite(LED[0][k], color[3][k]);
for(int k = 0;k<=2;k++)digitalWrite(LED[1][k], color[3][k]);
}
if(millis() - ref > 2000){
ref = millis();
}
if(!digitalRead(bot) == 1){
condicao = true;
}
}while(condicao == false);
return 0;
}