【问题标题】:Detecting button press / GPIO pulldown with ESP32 and Mongoose OS使用 ESP32 和 Mongoose OS 检测按钮按下/GPIO 下拉
【发布时间】:2020-01-22 21:45:03
【问题描述】:

对于 ESP32,在 Mongoose OS 下,我正在尝试编写一些代码来检测按钮是否被按下(GPIO 引脚被拉到 GND)。我写了下面的代码,但它不断打印按钮被按下,所以它认为按钮总是被按下,除非我真的按下它。当我按住它时,输出停止。该按钮连接在 GPIO 引脚和 GND 之间,没有上拉电阻,因为有内部上拉。不知道我的代码是不是错了,谢谢你们的cmets,谢谢。

我已经把相关代码贴在下面了:

// 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 */

【问题讨论】:

    标签: esp32 mongoose-os


    【解决方案1】:

    事实证明,GPIO 引脚 34、35、36 和 39 实际上是 GPI - 仅输入,没有内部上拉或下拉电阻。我用内部上拉切换到不同的 GPIO,这解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多