#include <stdio.h>
#include "pico/stdlib.h"
// Embarcatech 2024 - Projeto 4 - Semáforo
// autor: Luis Ferlim
// luisferlim.com
#define SINAL_VERMELHO 2
#define SINAL_AMARELO 3
#define SINAL_VERDE 4
#define BOTAO 5
//tempos do semaforo em milisegundos
//segundo dados nada confiaveis do google
const float tempoVerde = 10000;
const float tempoVermelho = 4000;
const float tempoAmarelo = tempoVerde/2.75;
bool cicloAtivo = false;
//assinaturas
void init();
void cicloSemaforo();
int main() {
init();
stdio_init_all();
while (true) {
if (gpio_get(BOTAO)){
cicloAtivo = !cicloAtivo;
if (cicloAtivo){
cicloSemaforo();
}
}
sleep_ms(200);
}
}
void init(){
gpio_init(SINAL_VERMELHO);
gpio_init(SINAL_VERDE);
gpio_init(SINAL_AMARELO);
gpio_init(BOTAO);
gpio_set_dir(SINAL_VERMELHO, GPIO_OUT);
gpio_set_dir(SINAL_VERDE, GPIO_OUT);
gpio_set_dir(SINAL_AMARELO, GPIO_OUT);
gpio_set_dir(BOTAO, GPIO_IN);
gpio_pull_down(BOTAO);
gpio_put(SINAL_VERMELHO, 0);
gpio_put(SINAL_VERDE, 0);
gpio_put(SINAL_AMARELO, 0);
}
void cicloSemaforo (){
gpio_put(SINAL_VERDE, 1);
sleep_ms(tempoVerde - tempoAmarelo);
gpio_put(SINAL_VERDE, 0);
gpio_put(SINAL_AMARELO, 1);
sleep_ms(tempoAmarelo);
gpio_put(SINAL_AMARELO, 0);
gpio_put(SINAL_VERMELHO, 1);
sleep_ms(tempoVermelho);
gpio_put(SINAL_VERMELHO, 0);
}