#include "pico/stdlib.h"
#define LED_PIN 13 // Definição do GPIO do LED no GP 13 da Raspberry Pi Pico
#define BTN_A_PIN 5 // Definição do GPIO do botão A no GP 5 da Raspberry Pi Pico
#define BTN_B_PIN 6 // Definição do GPIO do botão B no GP 6 da Raspberry Pi Pico
int main()
{
// Inicialização dos pinos
gpio_init(LED_PIN);
gpio_set_dir(LED_PIN, GPIO_OUT); // Configurar o LED como saída
gpio_init(BTN_A_PIN);
gpio_set_dir(BTN_A_PIN, GPIO_IN); // Configurar o botão A como entrada
gpio_pull_up(BTN_A_PIN); // Habilitar pull-up interno no botão A
gpio_init(BTN_B_PIN);
gpio_set_dir(BTN_B_PIN, GPIO_IN); // Configurar o botão B como entrada
gpio_pull_up(BTN_B_PIN); // Habilitar pull-up interno no botão B
int buttn_a_press_cnt = 0; // Contador de pressões do botão A
int blink_frequency = 10; // Frequência inicial do LED (10 Hz)
bool is_blinking = false; // Flag para controlar o estado de piscagem
while (1)
{
// Verificar se o botão A foi pressionado
if (!gpio_get(BTN_A_PIN)) // Botão pressionado (estado baixo)
{
sleep_ms(20); // Debounce para evitar leituras falsas do botão A
if (!gpio_get(BTN_A_PIN)) // Confirma a leitura do botão A
{
// Incrementa o contador em 1 unidade
buttn_a_press_cnt++;
while (!gpio_get(BTN_A_PIN)); // Espera o botão ser solto
}
}
// Se o botão A for pressionado 5 vezes
if (buttn_a_press_cnt == 5) {
is_blinking = true; // Ativa a flag de piscagem
for (int i = 0; i < blink_frequency * 10; i++) { // Pisca por 10 segundos
gpio_put(LED_PIN, 1); // Liga o LED
sleep_ms(500 / blink_frequency); // Tempo ligado
gpio_put(LED_PIN, 0); // Desliga o LED
sleep_ms(500 / blink_frequency); // Tempo desligado
// Verifica se o botão B foi pressionado durante a piscagem
if (!gpio_get(BTN_B_PIN)) {
sleep_ms(20); // Debounce para evitar leituras falsas do botão B
if (!gpio_get(BTN_B_PIN)) { // Alterna entre 10 Hz e 1 Hz
blink_frequency = (blink_frequency == 10) ? 1 : 10;
while (!gpio_get(BTN_B_PIN)); // Espera o botão ser solto
}
}
}
buttn_a_press_cnt = 0; // Reseta o contador
blink_frequency = 1;
}
}
}