#define LED_CARRO_VERDE D2
#define LED_CARRO_AMARELO D3
#define LED_CARRO_VERMELHO D4
#define LED_PED_VERDE D5
#define LED_PED_VERMELHO D6
#define BUZZER_PIN D9
#define BUTTON_PIN D8
void setup() {
pinMode(LED_CARRO_VERDE, OUTPUT);
pinMode(LED_CARRO_AMARELO, OUTPUT);
pinMode(LED_CARRO_VERMELHO, OUTPUT);
pinMode(LED_PED_VERDE, OUTPUT);
pinMode(LED_PED_VERMELHO, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
estadoPadrao();
}
void estadoPadrao() {
digitalWrite(LED_CARRO_VERDE, HIGH);
digitalWrite(LED_CARRO_AMARELO, LOW);
digitalWrite(LED_CARRO_VERMELHO, LOW);
digitalWrite(LED_PED_VERDE, LOW);
digitalWrite(LED_PED_VERMELHO, HIGH);
noTone(BUZZER_PIN);
}
void cicloSemaforo() {
digitalWrite(LED_CARRO_VERDE, LOW);
digitalWrite(LED_CARRO_AMARELO, HIGH);
delay(2000);
digitalWrite(LED_CARRO_AMARELO, LOW);
digitalWrite(LED_CARRO_VERMELHO, HIGH);
digitalWrite(LED_PED_VERMELHO, LOW);
digitalWrite(LED_PED_VERDE, HIGH);
delay(5000);
for (int i = 0; i < 6; i++) {
digitalWrite(LED_PED_VERDE, LOW);
tone(BUZZER_PIN, 1000);
delay(300);
digitalWrite(LED_PED_VERDE, HIGH);
noTone(BUZZER_PIN);
delay(300);
}
digitalWrite(LED_PED_VERDE, LOW);
digitalWrite(LED_PED_VERMELHO, HIGH);
noTone(BUZZER_PIN);
delay(1000);
digitalWrite(LED_CARRO_VERMELHO, LOW);
digitalWrite(LED_CARRO_AMARELO, HIGH);
delay(1500);
digitalWrite(LED_CARRO_AMARELO, LOW);
estadoPadrao();
}
void loop() {
if (digitalRead(BUTTON_PIN) == LOW) {
delay(200);
while (digitalRead(BUTTON_PIN) == LOW);
delay(50);
cicloSemaforo();
}
}Loading
st-nucleo-c031c6
st-nucleo-c031c6