Обнаружение нажатия кнопки / раскрытие GPIO с ESP32 и ОС Mon goose - PullRequest
0 голосов
/ 23 января 2020

Для 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 */

1 Ответ

1 голос
/ 23 января 2020

Как оказалось, выводы GPIO 34, 35, 36 и 39 на самом деле являются только входом GPI и не имеют внутренних понижающих или понижающих резисторов. Я переключился на другой GPIO с внутренним подтягиванием, и это решило проблему.

...