#include "pico/stdlib.h"
//#include "Timer.h"

#define BUTTON_PIN  5 //15    // Pino do botão A (GPIO 15)
#define LED_PIN    11 //14    // Pino do LED (GPIO 14)

volatile int button_press_count = 0;   // Contador de pressões do botão
volatile bool led_on = false;          // Estado do LED
absolute_time_t led_end_time;          // Tempo para desligar o LED após 10 segundos
//Timer timer;                           // Temporizador para contar as pressões

// Função para acionar o LED com frequência de 10 Hz
void blink_led_10hz() {
    static bool led_state = false;
    if (time_reached(led_end_time)) {
        // Desliga o LED após 10 segundos
        gpio_put(LED_PIN, 0);
        led_on = false;
    } else {
        // Pisca o LED com 10 Hz
        if (led_state) {
            gpio_put(LED_PIN, 0);  // Apaga o LED
        } else {
            gpio_put(LED_PIN, 1);  // Acende o LED
        }
        led_state = !led_state;
    }
    sleep_ms(100);
}

// Função de interrupção para detectar pressões do botão
// (Você precisa considerar o "quicar" do botão)
void button_isr(uint gpio, uint32_t events) {
    if (gpio == BUTTON_PIN) {
        button_press_count++;  // Incrementa o contador de pressões do botão

        if (button_press_count == 5) {
            // Quando o botão for pressionado 5 vezes, começa a piscar o LED
            led_on = true;
            led_end_time = make_timeout_time_ms(10000);  // Tempo para desligar após 10 segundos
            button_press_count = 0;  // Reinicia o contador de pressões
        }
    }
}

int main() {
    // Inicializa o Raspberry Pi Pico W
    gpio_init(BUTTON_PIN);
    gpio_set_dir(BUTTON_PIN, GPIO_IN);
    gpio_pull_up(BUTTON_PIN);  // Resistor de pull-down no botão

    gpio_init(LED_PIN);
    gpio_set_dir(LED_PIN, GPIO_OUT);  // Configura o pino do LED como saída

    // Configura a interrupção para o botão
    gpio_set_irq_enabled_with_callback(BUTTON_PIN, GPIO_IRQ_EDGE_FALL, true, &button_isr);

    // Loop principal
    while (true) {
        if (led_on) {
            blink_led_10hz();  // Chama a função para piscar o LED
        }
        sleep_ms(50);  // Atraso para não sobrecarregar o processador
    }

    return 0;
}
$abcdeabcde151015202530fghijfghij