TTP224触摸传感器
该模块是一个基于触摸检测IC(TTP223B)的电容式点动型触摸开关模块。常态下,模块输出低电平,模式为低功耗模式;当用手指触摸相应位置时,模块会输出高电平,模式切换为快速模式;当持续12秒没有触摸时,模式又切换为低功耗模式。可以将模块安装在非金属材料如塑料、玻璃的表面。也可以将薄薄的纸片(非金属)覆盖在模块的表面,直到触摸的位置正确,即可做成隐藏在墙壁、桌面等地方的按键。该模块可以让你免除常规按压型键的烦恼。
模块来源
采购链接:
https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-24706531953.10.37476a4b0lAfi7&id=522552731734
资料下载链接:
https://pan.baidu.com/s/1lBksfqx_dT4uIyABkHVm3Q
资料提取码:hj2n
规格参数
工作电压:2.4-5.5V
工作电流:2.5uA~9uA
模块尺寸:35x29 mm
最快响应时间:100Ms
控制方式:GOIO
管脚数量:6 Pin(2.54mm间距排针)
移植过程
引脚选择
移植至工程
我们的目标是将例程移植至ESP32-S3开发板上。已经为大家提供了完整的驱动代码,按照以下步骤,即可完成移植。
具体新建文件夹和新建c和h文件在 【DHT11温湿度传感器】章节中的1.4.2小节中有详细的教学,这里就不再多说了。
只不过这里我们将文件名 bsp_dht11.c 和 bsp_dht11.h 换成 bsp_touchkey.c 和 bsp_touchkey.h,文件夹名字改为TouchKey。
代码写入
在 bsp_touchkey.c 文件中写入:
c
#include "bsp_touchkey.h"
#include "stdio.h"
void delay_ms(unsigned int ms)
{
vTaskDelay(ms / portTICK_PERIOD_MS);
}
void delay_us(unsigned int us)
{
ets_delay_us(us);
}
/******************************************************************
* 函 数 名 称:TTP224_GPIO_Init
* 函 数 说 明:对电容式触摸芯片TTP224进行初始化
* 函 数 形 参:无
* 函 数 返 回:无
* 作 者:LC
* 备 注:无
******************************************************************/
void TTP224_GPIO_Init(void)
{
gpio_config_t KEY_config = {
.pin_bit_mask = (1ULL<<PIN_IN1)|(1ULL<<PIN_IN2)|(1ULL<<PIN_IN3)|(1ULL<<PIN_IN4), //配置引脚
.mode =GPIO_MODE_INPUT, //输入模式
.pull_up_en = GPIO_PULLUP_ENABLE, //使能上拉
.pull_down_en = GPIO_PULLDOWN_DISABLE, //不使能下拉
.intr_type = GPIO_INTR_DISABLE //不使能引脚中断
};
gpio_config(&KEY_config);
}
/******************************************************************
* 函 数 名 称:Key_IN1_Scanf
* 函 数 说 明:返回触摸键1引脚电平状态
* 函 数 形 参:无
* 函 数 返 回:0=未检测到有触摸 1=检测到触摸
* 作 者:LC
* 备 注:无
******************************************************************/
char Key_IN1_Scanf(void)
{
return KEY_IN1;
}
/******************************************************************
* 函 数 名 称:Key_IN2_Scanf
* 函 数 说 明:返回触摸键2引脚电平状态
* 函 数 形 参:无
* 函 数 返 回:0=未检测到有触摸 1=检测到触摸
* 作 者:LC
* 备 注:无
******************************************************************/
char Key_IN2_Scanf(void)
{
return KEY_IN2;
}
/******************************************************************
* 函 数 名 称:Key_IN3_Scanf
* 函 数 说 明:返回触摸键3引脚电平状态
* 函 数 形 参:无
* 函 数 返 回:0=未检测到有触摸 1=检测到触摸
* 作 者:LC
* 备 注:无
******************************************************************/
char Key_IN3_Scanf(void)
{
return KEY_IN3;
}
/******************************************************************
* 函 数 名 称:Key_IN4_Scanf
* 函 数 说 明:返回触摸键4引脚电平状态
* 函 数 形 参:无
* 函 数 返 回:0=未检测到有触摸 1=检测到触摸
* 作 者:LC
* 备 注:无
******************************************************************/
char Key_IN4_Scanf(void)
{
return KEY_IN4;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
在 bsp_touchkey.h文件中写入:
c
#ifndef _BSP_TOUCHKEY_H_
#define _BSP_TOUCHKEY_H_
#include <stdio.h>
#include <inttypes.h>
#include "sdkconfig.h"
#include "driver/gpio.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_rom_sys.h"
#include "esp_timer.h"
#include "driver/uart.h"
#include "rom/ets_sys.h"
#include "esp_system.h"
#include "driver/gptimer.h"
#include "esp_log.h"
#include "freertos/queue.h"
#include "driver/spi_master.h"
#include "nvs_flash.h"
#define PIN_IN1 1
#define PIN_IN2 2
#define PIN_IN3 3
#define PIN_IN4 4
#define KEY_IN1 gpio_get_level(PIN_IN1)
#define KEY_IN2 gpio_get_level(PIN_IN2)
#define KEY_IN3 gpio_get_level(PIN_IN3)
#define KEY_IN4 gpio_get_level(PIN_IN4)
void delay_us(unsigned int us);
void delay_ms(unsigned int ms);
void TTP224_GPIO_Init(void);//引脚初始化
char Key_IN1_Scanf(void);//触摸按键1的输入状态
char Key_IN2_Scanf(void);//触摸按键2的输入状态
char Key_IN3_Scanf(void);//触摸按键3的输入状态
char Key_IN4_Scanf(void);//触摸按键4的输入状态
#endif
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
移植验证
在main.c中输入代码如下
c
#include <stdio.h>
#include "TouchKey\bsp_touchkey.h"
void app_main(void)
{
TTP224_GPIO_Init();
printf("TTP224 Start.....\n");
while(1)
{
printf("Key_IN1=%d\r\n",Key_IN1_Scanf() );
printf("Key_IN2=%d\r\n",Key_IN2_Scanf() );
printf("Key_IN3=%d\r\n",Key_IN3_Scanf() );
printf("Key_IN4=%d\r\n",Key_IN4_Scanf() );
delay_ms(300);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
上电效果:
驱动代码: