const int verde = 8; //Porta do Led Verde do semáforo dos carros
const int amarelo = 10; //Porta do Led Amarelo do semáforo dos carros
const int vermelho = 12; //Porta do Led Vermelho do semáforo dos carros
const int verdeP = 6; //Porta do Led Verde do semáforo dos pedestres
const int vermelhoP = 4; //Porta do Led Vermelho do semáforo dos pedestres
const int botao = 2; //Porta do botão do semáforo dos pedestres
//Declarando variáveis que mudarão
unsigned long tempo; //Guardará o momento em que o programa iniciou
void setup()
{
tempo = millis(); //Atribui à variável tempo o valor do início do programa
pinMode(verde, OUTPUT); //Define a porta 8 como saída
pinMode(amarelo, OUTPUT); //Define a porta 10 como saída
pinMode(vermelho, OUTPUT); //Define a porta 12 como saída
pinMode(verdeP, OUTPUT); //Define a porta 6 como saída
pinMode(vermelhoP, OUTPUT); //Define a porta 4 como saída
pinMode(botao, INPUT_PULLUP); //Define a porta 2 como entrada como Resistor de Pull Up
digitalWrite(verde, 1); //Acende a luz Verde do semáforo dos carros
digitalWrite(vermelhoP, 1); //Acende a luz Vermelha do semáforo dos pedestres
}
void loop(){
int leitura = digitalRead(botao); // Atribui o valor de leitura da porta à variável leitura
if((millis() - tempo) > 5000){ //Verifica se já foram passados 5 segundos
if(leitura == 0){ //Verifica se o botão de pedestres foi pressionado
digitalWrite(verde, 0); //Apaga a luz verde do semáforo dos carros
digitalWrite(amarelo, 1); //Acende a luz amarela do semáforo dos carros
delay(2000); //Espera de 2 segundos de segurança
digitalWrite(amarelo, 0); //Apaga a luz amarela do semáforo dos carros
digitalWrite(vermelho, 1); //Acende a luz vermelha do semáforo dos carros
delay(1000); //Espera de 1 segundos de segurança
digitalWrite(vermelhoP, 0); //Apaga a luz vermelha do semáforo dos pedestres
digitalWrite(verdeP, 1); //Acende a luz verde do semáforo dos pedestres
delay(5000); //Espera de 5 segundos de segurança
for(int i = 0 ; i<2 ; i++){ //Comando para repetir a luz verde dos pedestres
digitalWrite(verdeP, 0); //Apaga a luz verde do semáforo dos pedestres
delay(400); //Espera de 0,5 segundos de segurança
digitalWrite(verdeP, 1); //Acende a luz verde do semáforo dos pedestres
delay(400); //Espera de 0,5 segundos de segurança
}
digitalWrite(verdeP, 0); //Apaga a luz verde do semáforo dos pedestres
digitalWrite(vermelhoP, 1); //Acende a luz vermelha do semáforo dos pedestres
delay(400); //Espera de 0,5 segundos de segurança
digitalWrite(vermelho, 0); //Apaga a luz vermelha do semáforo dos carros
digitalWrite(verde, 1); //Acende a luz verde do semáforo dos carros
tempo = millis(); //Atualiza o valor atribuido ao tempo
}
}
delay(10);
}