// Pinos dos LEDs
#define ledVermelho 10
#define ledAmarelo 9
#define ledVerde 8
void setup() {
pinMode(ledVermelho, OUTPUT);
pinMode(ledAmarelo, OUTPUT);
pinMode(ledVerde, OUTPUT);
digitalWrite(ledVermelho, LOW);
digitalWrite(ledAmarelo, LOW);
digitalWrite(ledVerde, HIGH); // Começa com o verde aceso
}
void loop() {
task_01();
}
void task_01() { //semáforo verde
// Variáveis de controle
static unsigned long tempoAnterior = 0;
static int estado = 0; // 0 = verde, 1 = amarelo, 2 = vermelho
if (estado == 0) {
if (millis() - tempoAnterior >= 5000) { // 5 segundos
digitalWrite(ledVerde, LOW);
digitalWrite(ledAmarelo, HIGH);
estado = 1;
tempoAnterior = millis();
}
}
if (estado == 1) {
if (millis() - tempoAnterior >= 1000) { // 1 segundo
digitalWrite(ledAmarelo, LOW);
digitalWrite(ledVermelho, HIGH);
estado = 2;
tempoAnterior = millis();
}
}
if (estado == 2) {
if (millis() - tempoAnterior >= 5000) { // 5 segundos
digitalWrite(ledVermelho, LOW);
digitalWrite(ledVerde, HIGH);
estado = 0;
tempoAnterior = millis();
}
}
}