以下是一个简单的伪代码示例,演示了如何实现长按识别功能:
c
#include <STC_header_file.h>
#define TOUCH_BUTTON_PIN 1
#define LONG_PRESS_THRESHOLD 1000 // 长按阈值,单位为毫秒
volatile unsigned long pressStartTime = 0;
void setup() {
// 配置触摸按钮引脚为输入模式
pinMode(TOUCH_BUTTON_PIN, INPUT);
// 启用内部上拉电阻
digitalWrite(TOUCH_BUTTON_PIN, HIGH);
// 配置中断触发条件
attachInterrupt(TOUCH_BUTTON_PIN, buttonInterrupt, CHANGE);
}
void loop() {
// 在主循环中执行其他任务
}
void buttonInterrupt() {
if (digitalRead(TOUCH_BUTTON_PIN) == LOW) {
// 按钮被按下,记录按下时间
pressStartTime = millis();
} else {
// 按钮被释放,计算按下时长
unsigned long pressDuration = millis() - pressStartTime;
if (pressDuration >= LONG_PRESS_THRESHOLD) {
// 长按事件发生,执行相应操作
// 例如:触发某个函数或设置标志位
// longPressDetected = true;
}
}
}
|