#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/irq.h"
#include "hardware/gpio.h"
#define BUTTON_PIN 15
volatile uint32_t last_interrupt_time = 0; // Tempo da última interrupção
void gpio_callback(uint gpio, uint32_t events) {
uint32_t current_time = to_ms_since_boot(get_absolute_time());
if (current_time - last_interrupt_time > 200) { // 200ms de debouncing
printf("Interrupção detectada no pino %d!\n", gpio);
last_interrupt_time = current_time;
}
}
// Configura o botão envolvido no processo
void config_button() {
gpio_init(BUTTON_PIN);
gpio_set_dir(BUTTON_PIN, GPIO_IN);
gpio_pull_up(BUTTON_PIN);
}
int main() {
stdio_init_all();
printf("Iniciando interrupção GPIO com debouncing no Raspberry Pi Pico W\n");
gpio_set_irq_enabled_with_callback(BUTTON_PIN, GPIO_IRQ_EDGE_FALL, true, &gpio_callback);
while (true) {
tight_loop_contents();
}
return 0;
}