#include <stdio.h>
#include "pico/stdlib.h"
#include "pico/time.h"

const uint pino_led = 12;
const uint botao = 6;
static volatile int a = 0;
static void gpio_irq_handler(uint gpio, uint32_t events);

bool debounccing() {
    static uint64_t ultimo_tempo = 0;
    uint64_t agora = time_us_64();
    
    if (agora - ultimo_tempo < 300000) 
        return false;
    
    ultimo_tempo = agora;
    return true;
}

void gpio_irq_handler(uint gpio, uint32_t events) {
    if (!debounccing()) 
    return;
    a++;
    printf("Contador: %d\n", a);
}

void piscar_led() {
    printf("10 segundos...\n");

    uint64_t tempo_final = time_us_64() + 10 * 1000000;
    while (time_us_64() < tempo_final) {
        gpio_put(pino_led, true);
        sleep_ms(100); 
        gpio_put(pino_led, false);
        sleep_ms(100); 
    }

    printf("Fim.\n");
    a = 0; 
}

int main() {
    stdio_init_all();
    
    gpio_init(pino_led);
    gpio_set_dir(pino_led, GPIO_OUT);
    gpio_put(pino_led, false);

    gpio_init(botao);
    gpio_set_dir(botao, GPIO_IN);
    gpio_pull_up(botao); 

    gpio_set_irq_enabled_with_callback(botao, GPIO_IRQ_EDGE_FALL, true, &gpio_irq_handler);

    while (true) {
      if (a >= 5) {
          piscar_led();
      }
        sleep_ms(100);
     }
    }