Для ESP32, под ОС Mon goose, я пытаюсь написать некоторый код, чтобы обнаружить, что кнопка была нажата (вывод GPIO вытянут в GND). Я написал код ниже, но он постоянно печатает, что кнопка нажата, поэтому он думает, что кнопка всегда нажата, за исключением случаев, когда я действительно нажимаю на нее sh. Когда я пу sh и удерживаю его, вывод прекращается. Кнопка подключена между выводом GPIO и заземлением, без подтягивающего резистора, поскольку имеется внутреннее подтягивание. Интересно, если мой код неправильный, и буду благодарен за ваши комментарии, спасибо.
Я вставил соответствующий код ниже:
// GPIO 36
#define BTN_MOB 36
#ifdef BTN_MOB
mgos_gpio_set_mode(BTN_MOB, MGOS_GPIO_MODE_INPUT);
#endif
static void button_cb(int pin, void *pParam)
{
if(pin == BTN_MOB)
LOG(LL_INFO, ("***** BUTTON PRESSED\r\n"));
}
mgos_gpio_set_button_handler(BTN_MOB,
MGOS_GPIO_PULL_UP,
MGOS_GPIO_INT_EDGE_NEG,
100 /* debounce ms */,
button_cb, /* callback handler */
NULL); /* arguments to callback handler */