触摸传感器是一个外围设备,具有内部振荡器电路,可在固定时间内测量各个 GPIO 引脚上的充电/放电频率。因此,这些触摸传感器也称为电容式传感器。例如,如果您触摸这些引脚中的任何一个,手指电荷将通过更改连接到触摸传感器的 RC 电路来改变这个周期数。TouchRead() 将返回特定时间 (meas) 内的循环次数 (充电/放电)。此计数的更改将用于验证是否发生了触摸。这些引脚可以很容易地集成到电容式焊盘中,并取代机械按钮。
注意
并非每个 SoC 中都存在触摸外设。有关更多信息,请参阅每个芯片的数据表。
此函数获取触摸传感器数据。每个触摸传感器都有一个计数器,用于计算充电/放电循环次数。当“触摸”焊盘时,由于等效电容较大,计数器中的值会发生变化。数据的变化决定了焊盘是否被触摸。
touch_value_t touchRead(uint8_t pin);
该函数将返回 uint16_t (ESP32) 或 uint32_t (ESP32-S2/S3) 的触摸板值。
此功能用于设置测量作所需的周期。touchRead、阈值和检测准确性的结果取决于这些值。默认设置 touchRead 需要 ~0.5 毫秒。
void touchSetCycles(uint16_t measure, uint16_t sleep);
此功能用于将中断附加到触摸板。如果触摸传感器值低于 ESP32 的给定阈值或高于 ESP32-S2/S3 的给定阈值,则调用该函数。要确定触摸状态和未触摸状态之间的适当阈值,请使用 touchRead() 函数。
void touchAttachInterrupt(uint8_t pin, void (*userFunc)(void), touch_value_t threshold);
此功能用于将中断附加到触摸板。在 ISR 调用的函数中,您有可用的给定参数。
void touchAttachInterruptArg(uint8_t pin, void (*userFunc)(void*), void *arg, touch_value_t threshold);
此功能用于将中断从触摸板中分离出来。
void touchDetachInterrupt(uint8_t pin);
此功能用于将触摸板设置为深度睡眠的唤醒源。
注意
ESP32-S2 和 ESP32-S3 仅支持一个睡眠唤醒触摸板。
void touchSleepWakeUpEnable(uint8_t pin, touch_value_t threshold);
此功能用于告诉驱动者,如果传感器低于或高于阈值,它是否应激活中断。默认值较低。
void touchInterruptSetThresholdDirection(bool mustbeLower);
此功能用于获取触摸板的最新 ISR 状态。
bool touchInterruptGetLastStatus(uint8_t pin);
如果触摸板已被并继续按下,则此函数返回 true,否则返回 false。
读取触摸传感器的示例。
examples/Touch/TouchRead/TouchRead.ino
触摸中断的用法示例。
examples/Touch/TouchInterrupt/TouchInterrupt.ino
更多示例可以在我们的存储库 -> Touch 示例中找到。