Este projeto implementa a simulação de um semáforo utilizando um Raspberry Pi Pico W (RP2040). O código alterna entre os LEDs vermelho, amarelo e verde de forma sequencial, representando o funcionamento de um semáforo tradicional. O tempo de mudança de estado é de 3 segundos, e o estado atual é impresso no terminal via printf.
O objetivo deste projeto é demonstrar o uso de GPIOs e timers no RP2040 para controle sequencial de LEDs. Ele também serve como uma introdução ao uso de timers repetitivos para criar delays sem bloquear a execução principal do programa.
- Controle sequencial de LEDs representando um semáforo:
- Vermelho: Indica parada.
- Amarelo: Indica alerta de mudança.
- Verde: Indica liberação.
- Impressão do estado atual no terminal via
printf. - Uso de um timer repetitivo para alternar os estados automaticamente a cada 3 segundos.
O código é dividido nas seguintes partes:
- Definição dos pinos GPIO dos LEDs (11, 12 e 13).
- Configuração inicial dos pinos e definição do estado inicial dos LEDs.
- Um callback (
repeating_timer_callback) que muda o estado dos LEDs a cada 3 segundos. - A transição segue a ordem:
- Vermelho → Amarelo
- Amarelo → Verde
- Verde → Vermelho
- Exibe no terminal o estado atual do semáforo a cada 1 segundo.
- Raspberry Pi Pico W (RP2040)
- 3 LEDs
- Vermelho conectado ao GPIO 11
- Amarelo conectado ao GPIO 12
- Verde conectado ao GPIO 13
- 3 resistores de 330Ω (um para cada LED)
- SDK do Raspberry Pi Pico
- Compilador para C/C++ (arm-none-eabi-gcc)
- Ambiente de desenvolvimento configurado para RP2040
Conecte os LEDs aos respectivos pinos conforme a lista de requisitos de hardware.
- Clone o repositório ou copie o código-fonte.
- Compile o código utilizando o SDK do Raspberry Pi Pico.
- Carregue o binário no Raspberry Pi Pico via USB.
- Abra um terminal e conecte-se ao Pico via
minicom,picocomou outro terminal serial. - O estado do semáforo será impresso no terminal a cada 1 segundo.
- Os LEDs mudarão de estado automaticamente a cada 3 segundos.
Vermelho
Vermelho
Vermelho
Amarelo
Amarelo
Amarelo
Verde
Verde
Verde
Hugo Martins Santana (TIC370101267)
Este projeto é disponibilizado sob a licença MIT. Consulte o arquivo LICENSE para mais informações.