#include "pico/stdlib.h"
// Definição dos pinos GPIO para o Semáforo 1
#define S1_VERMELHO_PIN 19
#define S1_AMARELO_PIN 20
#define S1_VERDE_PIN 21
// Definição dos pinos GPIO para o Semáforo 2
#define S2_VERMELHO_PIN 18
#define S2_AMARELO_PIN 17
#define S2_VERDE_PIN 16
// Funções para controlar os estados dos semáforos
int semaforo1_verde() {
gpio_put(S1_VERMELHO_PIN, 0);
gpio_put(S1_AMARELO_PIN, 0);
gpio_put(S1_VERDE_PIN, 1);
}
int semaforo1_amarelo() {
gpio_put(S1_VERMELHO_PIN, 0);
gpio_put(S1_AMARELO_PIN, 1);
gpio_put(S1_VERDE_PIN, 0);
}
int semaforo1_vermelho() {
gpio_put(S1_VERMELHO_PIN, 1);
gpio_put(S1_AMARELO_PIN, 0);
gpio_put(S1_VERDE_PIN, 0);
}
int semaforo2_verde() {
gpio_put(S2_VERMELHO_PIN, 0);
gpio_put(S2_AMARELO_PIN, 0);
gpio_put(S2_VERDE_PIN, 1);
}
int semaforo2_amarelo() {
gpio_put(S2_VERMELHO_PIN, 0);
gpio_put(S2_AMARELO_PIN, 1);
gpio_put(S2_VERDE_PIN, 0);
}
int semaforo2_vermelho() {
gpio_put(S2_VERMELHO_PIN, 1);
gpio_put(S2_AMARELO_PIN, 0);
gpio_put(S2_VERDE_PIN, 0);
}
int main() {
// Inicialização do stdio para depuração (opcional)
stdio_init_all();
// Configura os pinos do Semáforo 1 como saídas
gpio_init(S1_VERMELHO_PIN);
gpio_set_dir(S1_VERMELHO_PIN, GPIO_OUT);
gpio_init(S1_AMARELO_PIN);
gpio_set_dir(S1_AMARELO_PIN, GPIO_OUT);
gpio_init(S1_VERDE_PIN);
gpio_set_dir(S1_VERDE_PIN, GPIO_OUT);
// Configura os pinos do Semáforo 2 como saídas
gpio_init(S2_VERMELHO_PIN);
gpio_set_dir(S2_VERMELHO_PIN, GPIO_OUT);
gpio_init(S2_AMARELO_PIN);
gpio_set_dir(S2_AMARELO_PIN, GPIO_OUT);
gpio_init(S2_VERDE_PIN);
gpio_set_dir(S2_VERDE_PIN, GPIO_OUT);
// Loop principal do programa
while (1) {
// Estado 1: Semáforo 1 Verde, Semáforo 2 Vermelho
semaforo1_verde();
semaforo2_vermelho();
sleep_ms(2500); // Espera 5 segundos
// Estado 2: Semáforo 1 Amarelo, Semáforo 2 Vermelho
semaforo1_amarelo();
semaforo2_vermelho();
sleep_ms(1000); // Espera 2 segundos
// Estado 3: Semáforo 1 Vermelho, Semáforo 2 Verde
semaforo1_vermelho();
semaforo2_verde();
sleep_ms(2500); // Espera 5 segundos
// Estado 4: Semáforo 1 Vermelho, Semáforo 2 Amarelo
semaforo1_vermelho();
semaforo2_amarelo();
sleep_ms(1000); // Espera 2 segundos
}
return 0;
}