const int ledVerde = 5;
const int ledAmarelo = 6;
const int ledVermelho = 7;
// Tempos de cada fase (em milissegundos)
const unsigned long tempoVerde = 5000; // 5 segundos
const unsigned long tempoAmarelo = 2000; // 2 segundos
const unsigned long tempoVermelho = 5000; // 5 segundos
unsigned long tempoAnterior = 0;
int estado = 0; // 0: Verde, 1: Amarelo, 2: Vermelho
void setup() {
pinMode(ledVerde, OUTPUT);
pinMode(ledAmarelo, OUTPUT);
pinMode(ledVermelho, OUTPUT);
}
void loop() {
unsigned long tempoAtual = millis(); // Captura o tempo atual
if (estado == 0) { // FASE VERDE
digitalWrite(ledVerde, HIGH);
digitalWrite(ledAmarelo, LOW);
digitalWrite(ledVermelho, LOW);
if (tempoAtual - tempoAnterior >= tempoVerde) {
estado = 1; // Muda para Amarelo
tempoAnterior = tempoAtual;
}
}
else if (estado == 1) { // FASE AMARELA
digitalWrite(ledVerde, LOW);
digitalWrite(ledAmarelo, HIGH);
digitalWrite(ledVermelho, LOW);
if (tempoAtual - tempoAnterior >= tempoAmarelo) {
estado = 2; // Muda para Vermelho
tempoAnterior = tempoAtual;
}
}
else if (estado == 2) { // FASE VERMELHA
digitalWrite(ledVerde, LOW);
digitalWrite(ledAmarelo, LOW);
digitalWrite(ledVermelho, HIGH);
if (tempoAtual - tempoAnterior >= tempoVermelho) {
estado = 0; // Volta para o Verde
tempoAnterior = tempoAtual;
}
}
}SEMÁFORO B
SEMÁFORO A