esp32 - 使用 ESP32 和 Mongoose OS 检测按钮按下/GPIO 下拉
问题描述
对于 ESP32,在 Mongoose OS 下,我正在尝试编写一些代码来检测按钮是否被按下(GPIO 引脚被拉到 GND)。我写了下面的代码,但它不断打印按钮被按下,所以它认为按钮总是被按下,除非我真的按下它。当我按住它时,输出停止。该按钮连接在 GPIO 引脚和 GND 之间,没有上拉电阻,因为有内部上拉。我想知道我的代码是否错误,并感谢您的意见,谢谢。
我在下面粘贴了相关代码:
// 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 */
解决方案
事实证明,GPIO 引脚 34、35、36 和 39 实际上是 GPI - 仅输入,没有内部上拉或下拉电阻。我用内部上拉切换到不同的 GPIO,这解决了问题。
推荐阅读
- android - 如何将 RSA 公钥转换为字符串,反之亦然?
- python - 无法将大小数组重塑为形状 MoviePy 边距
- android - 尝试生成 ionic 项目的 android 或 ios 构建时出现错误
- arrays - 子功能组件中的状态未更新
- python-3.x - 如何在 python 3 中从笛卡尔坐标生成极坐标
- airflow - 是否有在 Airflow 部署之间共享脚本的有效方法?
- firebase - 在另一个类中显示firestore数据库信息;颤振,Android 工作室
- javascript - DOM innerText 一直只显示数组的最后一个元素
- python - python中的指数衰减回归模型
- spring-boot - 等待多个 Flux 完成并返回组合结果