//#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/queue.h"
#include "driver/gpio.h"
#include <time.h>
#define INPUT_PIN 15
#define DEBOUNCE_DELAY_MS 100
bool triggered=false;
time_t time_old_isr = 0;
int state = 0;
static void IRAM_ATTR gpio_interrupt_handler(void *args)
{
time_t time_now_isr=time(NULL);
time_t time_isr=(time_now_isr-time_old_isr)*1000L;
int pinNumber = (int)args;
if(time_isr >= DEBOUNCE_DELAY_MS)
{
triggered=true;
}
}
void app_main()
{
int level;
gpio_pad_select_gpio(INPUT_PIN);
gpio_set_direction(INPUT_PIN, GPIO_MODE_INPUT);
gpio_pulldown_en(INPUT_PIN);
gpio_pullup_dis(INPUT_PIN);
gpio_set_intr_type(INPUT_PIN, GPIO_INTR_POSEDGE);
gpio_install_isr_service(0);
gpio_isr_handler_add(INPUT_PIN, gpio_interrupt_handler, (void *)INPUT_PIN);
while(1)
{
if(triggered){
if(gpio_get_level(INPUT_PIN))
{
ets_printf("pressed\n");
}
// ets_printf("Level inside %d\n",level);
triggered=false;
}
vTaskDelay(10/portTICK_PERIOD_MS);
}
}