1 Star 1 Fork 0

JIAMING/easyio-lib-for-esp32

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
01_blink
02_ledBlink
03_easyio_led
04_GPIO_IN_OUT
05_Task
06_GPIO_INTR
07_GPIO_INTR_Queue
08_KEY
09_TouchPad
.vscode
components/easyio_lib
main
CMakeLists.txt
Makefile
README.md
sdkconfig
10_LEDc_PWM
11_ADC
12_DAC
13_MCPWM_DC_MOTOR
14_MCPWM_HALF_BRIDGE
15_MCPWM_SERVO
16_MCPWM_CAPTURE_2Timer6IO
17_PCNT_Encoder
18_RMT_IR_RX
19_RMT_IR_RX_TX
20_RMT_1WIRE_WS2812B
21_UART1_TX_RX
22_UART0_TX_RX_QUEUE
23_UART0_TX_RX_QUEUE_PATTERN
24_UART1_RS485_FLOWCON
25_I2C_TOOLS
26_I2C_MPU6050
27_I2C_AHT20
27x1_I2C_SHT30
27x2_I2C_PCF8563_RTC
28_SPI_LCD_ILI9341_9488_9481_ST7735_7789_7796_HX8357C
29_SPI_AS5047P
30_SPI_TLE5012B
31_SPI_LCD_I2C_TOUCH_CTP
32_NVS
33_FATFS_SD_CARD_VFS
34_FATFS_SD_CARD_LCD
35_JPG_LCD_DMA
35x_JPG_LCD_DMA_time
36_JPG_LCD_DMA_EFFECT
37_JPG_LCD_DMA_SD_PHOTO_ALBUM
38_WIFI_station
39_WIFI_softAP
40_WIFI_tcp_client
41_WIFI_tcp_server
42_WIFI_udp_client
43_WIFI_udp_server
44_WIFI_http_request
45_WIFI_http_request_weather_cjson
46_WIFI_http_request_weather_cjson_free_15days
47_WIFI_MQTT
48_mbedtls_sha1_md5_AES_HmacSha1_base64
49_WIFI_MQTT_Aliyun_IOT_Platform
50_WIFI_SNTP_DeepSleep
51_WIFI_Scan
52_WIFI_SmartConfig_EspTouch_AirKiss
53_Blufi
54_ETH_DHCP
easyio_lib
image
BOM_PCB_ESP32-DEV_rev0.html
Q群827686418.png
README.md
Schematic_ESP32-IOT-KIT_2022-01-16.pdf
cleanBuild.bat
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

09_TouchPad

例程简介

学习ESP32触摸传感器

使用 FreeRTOSTask,创建两个任务:

  1. led_task ,控制LED闪烁

  2. touch_pad_scan_task ,检测触摸按键,并控制led任务运行状态

使用 touch_pad_button.c.h 驱动模块,来对ESP32的 触摸传感器 进行配置。

【注意】:开发板因触摸按键的IO与ETH共用,导致走线情况不理想,无法按照官方硬件手册的设计准则去设计。还因为受限于PCB尺寸,无法容纳更大面积的触摸板,最后只在开发板上提供了一10*10mm的触摸按键, 致使最终触摸效果不理想,触摸前后大约只有1/4~1/5初始值的变化,与官方Demo的1/3相差略远。如需修改按键触发阈值,请到 "touch_pad_button.c"文件中的tp_example_set_thresholds函数去修改。

硬件连接

LED Touch_Pad_Button
ESP32 GPIO33 GPIO27

Touch_Pad 与 Pin 对照表,可见 touch_pad_button.c 文件

运行现象

  • LED闪烁。触摸按键放上手指后,LED闪烁停止。

  • 手指拿开后,LED会继续闪烁。

  • 串口输出 触摸按键的初始计数值当前计数值中断触发状态

学习内容

  1. ESP32的 触摸传感器原理,人体电容模型。

  2. ESP32最多支持10路Touch_Pad的输入,不支持任意GPIO映射,Touch_Pad IO 与 GPIO 对照表在touch_pad_button.c.h中。

关键函数

// 触摸板按键检测初始化.支持函数重载,支持输入不定数目的通道参数,总参数数目为 2~11。
void touch_pad_button_init(int tp_num, ...);

// 读取滤波后的OUT计数值
touch_pad_read_filtered(i, &value);

//touch pad 的初始感应值,用来做中断阈值的较准(注意,在初始化过程中,电极请勿触碰其他物体,以免干扰此值的正常获取)
extern bool s_pad_activated[TOUCH_PAD_MAX];

注意事项

  • 开发板因触摸按键的IO与ETH共用,导致走线情况不理想,无法按照官方硬件手册的设计准则去设计。还因为受限于PCB尺寸,无法容纳更大面积的触摸板,最后只在开发板上提供了一10*10mm的触摸按键, 致使最终触摸效果不理想,触摸前后大约只有1/4~1/5初始值的变化,与官方Demo的1/3相差略远。如需修改按键触发阈值,请到 "touch_pad_button.c"文件中的tp_example_set_thresholds函数去修改。

  • touch_pad_button_init支持重载,可输入多个参数,但第一项的参数个数也要跟随改变。例:
    touch_pad_button_init(1, TOUCH_PAD_NUM0);
    touch_pad_button_init(4, TOUCH_PAD_NUM0, TOUCH_PAD_NUM2, TOUCH_PAD_NUM3, TOUCH_PAD_NUM4);

  • ESP32 的T1GPIO0,一般有电阻下拉到GND做BOOT模式选择,导致触摸失效,所以尽量不要用T1做 touch pad 功能。

  • ESP32的触摸判定原理为:通过读取 touch pad 的初始感应值,使用初始值的 2/3 作为阈值,小于初始值的 2/3 则判定为被人体触摸。如因硬件设计不当,导致人体触摸不灵敏, 可到 touch_pad_button.c.static void tp_example_set_thresholds(void) 函数中更改阈值。

  • 在初始化过程中,触摸板电极请勿触碰其他物体(不要上电过程中手碰触摸板)。以免干扰参考值的获取。

  • 触摸板电极的Layout设计,要严格遵守手册的要求。注意ESD防护。

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/jmforu/easyio-lib-for-esp32.git
git@gitee.com:jmforu/easyio-lib-for-esp32.git
jmforu
easyio-lib-for-esp32
easyio-lib-for-esp32
master

搜索帮助