ESP32 有 10 个内部电容式触摸传感器。例如,可以将其用作触摸按钮(英文:Touch Sensor)。
这些传感器与多个 GPIO 连接:
T0:GPIO 4
T1:GPIO 0
T2:GPIO 2
T3:GPIO 15
T4:GPIO 13
T5:GPIO 12
T6:GPIO 14
T7:GPIO 27
T8:GPIO 33
T9:GPIO 32
为了读取它们,您必须使用函数: touchRead(Touch Pin #);
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百四十一:ESP32 Dev Board CH340 - USB-C口 ESP-WROOM-32 开发板
{花雕动手做}项目之三:使用内置触摸传感器控制LED,串口输出触摸数值与LED状态
实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百四十一:ESP32 Dev Board CH340 - USB-C口 ESP-WROOM-32 开发板
{花雕动手做}项目之三:使用内置触摸传感器控制LED,串口输出触摸数值与LED状态
*/
#define TOUTCH_PIN T0 // 定义ESP32的触摸引脚为T0,对应引脚D4
#define LED_PIN 2 // 定义LED引脚为2
int touch_value = 100; // 初始化触摸传感器的值
void setup()
{
Serial.begin(115200); // 初始化串行通信,波特率为115200
delay(1000); // 延迟1秒,给串行监视器启动时间
Serial.println("ESP32 Touch Test"); // 打印测试信息
pinMode(LED_PIN, OUTPUT); // 设置LED引脚为输出模式
digitalWrite (LED_PIN, LOW); // 初始化LED为关闭状态
}
void loop()
{
touch_value = touchRead(TOUTCH_PIN); // 读取触摸传感器的值
Serial.print("Touch value: "); // 输出触摸值的描述
Serial.println(touch_value); // 打印触摸传感器的值
if (touch_value < 50) // 如果触摸值小于50
{
digitalWrite (LED_PIN, HIGH); // 打开LED
Serial.println("LED is ON"); // 输出LED状态
}
else
{
digitalWrite (LED_PIN, LOW); // 关闭LED
Serial.println("LED is OFF"); // 输出LED状态
}
delay(1000); // 延迟1秒
}
代码解读
1、引脚定义:使用 #define 宏定义触摸传感器和LED的引脚,便于代码的可读性和维护。
2、串行通信初始化:在 setup 函数中,使用 Serial.begin(115200) 初始化串行通信,以便在串行监视器中查看触摸传感器的值。
3、引脚模式设置:使用 pinMode 函数将LED引脚设置为输出模式,并初始化为低电平(关闭状态)。
4、触摸传感器读取与输出:在 loop 函数中,使用 touchRead 函数读取触摸传感器的值,并通过串行通信打印出来。
5、条件控制LED和状态输出:根据触摸传感器的值,通过 digitalWrite 函数控制LED的开关状态,并在串行监视器上输出LED的当前状态。
通过这些修改,串行监视器不仅可以输出触摸传感器的数值,还可以输出LED的状态,便于调试和观察运行情况。
实验串口返回情况
实验场景图
评论