esp: button component
button组件
ESP 按键:https://docs.espressif.com/projects/esp-iot-solution/zh_CN/latest/input_device/button.html
按键组件实现了 GPIO 和 ADC 两种按键,并允许同时创建两种不同的按键。
注意:
*1、GPIO 按键需注意上下拉问题,组件内部会启用芯片内部的上下拉电阻,但是在仅支持输入的 IO 内部没有电阻, 需要外部连接。*
2、ADC 按键需注意电压不能超过 ADC 量程。
按键事件
每个按键拥有下表的 8 个事件:
事件 | 触发条件 |
---|---|
BUTTON_PRESS_DOWN | 按下 |
BUTTON_PRESS_UP | 弹起 |
BUTTON_PRESS_REPEAT | 按下弹起次数 >= 2次 |
BUTTON_PRESS_REPEAT_DONE | 重复按下结束 |
BUTTON_SINGLE_CLICK | 按下弹起 1 次 |
BUTTON_DOUBLE_CLICK | 按下弹起 2 次 |
BUTTON_MULTIPLE_CLICK | 指定重复按下次数 N 次,达成时触发 |
BUTTON_LONG_PRESS_START | 按下时间达到阈值的瞬间 |
BUTTON_LONG_PRESS_HOLD | 长按期间一直触发 |
BUTTON_LONG_PRESS_UP | 长按弹起 |
BUTTON_PRESS_REPEAT_DONE | 多次按下弹起结束 |
BUTTON_PRESS_END | 表示 button 此次检测已结束 |
- espressif/button:当前最新版本是v3.4.0
如何将button组件添加到目标项目?
Please use the component manager command
add-dependency
to add thebutton
to your project’s dependency, during theCMake
step the component will be downloaded automatically释义:请使用 add-dependency 组件管理命令将 button 添加到目标项目依赖,在执行 CMake 步骤时,button 组件将会被自动下载到目标项目。
组件管理命令添加button组件:
1 | # 添加指定button最新版本依赖 |
组件管理命令执行后,在项目的 main 文件夹下将出现 idf_component.yml
文件,文件内容如下:
1 | ## IDF Component Manager Manifest File |
执行 idf.py build
完成后,在项目下创建了 managed_components
文件夹,该文件夹有下载的组件:espressif__button
和 espressif__cmake_utilities
同时发现还有其他文件被新建:
1 | pi@pi-NMH-WCX9:~/esp/app-example/get-started/button$ ls -al |
很明显,dependencies.lock、sdkconfig文件是自动新建的,managed_components文件夹也是自动被新建的。
验证
源码地址:https://github.com/eiSouthBoy/esp-idf-example/tree/main/002-button
1 |
|
当 ESP32-DevKitC 开发板上的 Boot 按键被按下后,外接 GPIO4 的LED灯将会点亮,再次按下,LED灯熄灭。