#include <stdio.h>
#include "pico/stdlib.h" // Inclui a biblioteca padrão para funcionalidades básicas como GPIO, temporização e comunicação serial.
#include "hardware/timer.h" // Inclui a biblioteca para gerenciamento de temporizadores de hardware.
#define LED_PIN_RED 13
#define LED_PIN_BLUE 12
#define LED_PIN_GREEN 11
// Função de callback que será chamada repetidamente pelo temporizador
// O tipo bool indica que a função deve retornar verdadeiro ou falso para continuar ou parar o temporizador.
bool repeating_timer_callback(struct repeating_timer *t) {
printf("Sinal mudou\n");
if (gpio_get(LED_PIN_RED)) {
gpio_put(LED_PIN_RED, 0);
gpio_put(LED_PIN_BLUE, 1);
} else if (gpio_get(LED_PIN_BLUE)) {
gpio_put(LED_PIN_BLUE, 0);
gpio_put(LED_PIN_GREEN, 1);
} else if (gpio_get(LED_PIN_GREEN)) {
gpio_put(LED_PIN_GREEN, 0);
gpio_put(LED_PIN_RED, 1);
}
// Retorna true para manter o temporizador repetindo. Se retornar false, o temporizador para.
return true;
}
int main() {
stdio_init_all();
gpio_init(LED_PIN_RED);
gpio_set_dir(LED_PIN_RED,true);
gpio_put(LED_PIN_RED, 1);
gpio_init(LED_PIN_BLUE);
gpio_set_dir(LED_PIN_BLUE,true);
gpio_put(LED_PIN_BLUE, 0);
gpio_init(LED_PIN_GREEN);
gpio_set_dir(LED_PIN_GREEN,true);
gpio_put(LED_PIN_GREEN, 0);
// Declaração de uma estrutura de temporizador de repetição.
// Esta estrutura armazenará informações sobre o temporizador configurado.
struct repeating_timer timer;
// Configura o temporizador para chamar a função de callback a cada 3 segundos.
add_repeating_timer_ms(3000, repeating_timer_callback, NULL, &timer);
// Loop infinito que mantém o programa em execução.
while (true) {
sleep_ms(1000); // Pausa de 1 segundo.
printf("+ 1 segundo se passou\n");
}
return 0;
}