#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
#include <driver/gpio.h>
#include <esp_err.h>
#include <esp_log.h>
const char key[4][4]={
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
gpio_num_t mask[8]={0,0,0,0,0,0,0,0};
gpio_num_t res[8];
void intr_click_handler(void* args);
static gpio_num_t keypad_pins[8]={
GPIO_NUM_13,
GPIO_NUM_12,
GPIO_NUM_14,
GPIO_NUM_27,
GPIO_NUM_26,
GPIO_NUM_25,
GPIO_NUM_33,
GPIO_NUM_32,
};
static gpio_num_t keypad_2[8];
bool b1,b2;
uint8_t row,col;
int level;
esp_err_t keypad_initialize()
{
//show_status();
gpio_install_isr_service(0);
for(int i=0;i<4;i++)
{
gpio_intr_disable(keypad_pins[i]);
gpio_set_direction(keypad_pins[i], GPIO_MODE_INPUT);
gpio_set_intr_type(keypad_pins[i], GPIO_INTR_POSEDGE);
gpio_isr_handler_add(keypad_pins[i],(void*)intr_click_handler,(void*)i);
}
//show_status();
for(int i=4;i<8;i++)
{
gpio_set_direction(keypad_pins[i], GPIO_MODE_INPUT);
}
//show_status();
//show_status();
}
void turnon_row()
{
for(int i=4;i<8;i++)
{
gpio_set_pull_mode(keypad_pins[i],GPIO_PULLDOWN_ONLY);
}
for(int i=0;i<4;i++)
{
gpio_set_pull_mode(keypad_pins[i],GPIO_PULLUP_ONLY);
gpio_set_direction(keypad_pins[i], GPIO_MODE_INPUT);
gpio_set_intr_type(keypad_pins[i],GPIO_INTR_NEGEDGE);
gpio_intr_enable(keypad_pins[i]);
}
}
void turnon_cols()
{
for(int i=0;i<4;i++)
{
}
for(int i=4;i<8;i++)
{
}
}
void intr_click_handler(void* args){
/*for(int i=0;i<8;i++)
{
gpio_set_pull_mode(keypad_pins[i],GPIO_PULLDOWN_ONLY);
}*/
turnon_row();
for(int i=4;i<8;i++)
{
gpio_set_direction(keypad_pins[i], GPIO_MODE_INPUT);
ets_printf("here\n");
if(gpio_get_level(keypad_pins[i]))
{
ets_printf("Col %d",i);
}
}
show_status();
}
void show_status()
{
int level;
for(int i=0;i<8;i++)
{
level=gpio_get_level(keypad_pins[i]);
ets_printf("Level of %d is = %d\n",i,level);
}
ets_printf("\nNext Batch\n");
}
void app_main()
{
keypad_initialize();
}