Arduino单按钮的长按短按实现
作者:野牛程序员:2023-08-24 09:55:41Arduino阅读 3769
下面是一个简单的示例代码,演示了如何在Arduino上实现单按钮的长按和短按检测:
const int buttonPin = 2; // 按钮连接的引脚
int buttonState = HIGH; // 当前按钮状态
int lastButtonState = HIGH; // 上一个按钮状态
unsigned long lastDebounceTime = 0; // 上次按下时间
unsigned long debounceDelay = 50; // 按钮防抖延迟
bool buttonPressed = false; // 按钮是否被按下
bool longPressDetected = false; // 是否检测到长按
void setup() {
pinMode(buttonPin, INPUT);
digitalWrite(buttonPin, HIGH); // 内部上拉
Serial.begin(9600);
}
void loop() {
int reading = digitalRead(buttonPin);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == LOW) {
buttonPressed = true;
}
}
}
if (buttonPressed) {
if (buttonState == HIGH) {
// 按钮释放
if (longPressDetected) {
Serial.println("长按释放");
} else {
Serial.println("短按释放");
}
buttonPressed = false;
longPressDetected = false;
} else {
// 按钮按下
if ((millis() - lastDebounceTime) > 1000) {
longPressDetected = true;
Serial.println("长按中...");
}
}
}
lastButtonState = reading;
}这段代码使用了按钮防抖来确保稳定的按钮状态检测。如果按钮被短按,则会在按钮释放时输出"短按释放"。如果按钮被长按(按下超过1秒),则会持续输出"长按中...",并在长按释放时输出"长按释放"。
请注意,要将按钮连接到指定的引脚(buttonPin)上,并根据需要调整长按和防抖的时间参数。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:Arduino舵机急停代码
- 下一篇:arduino如何用按键程序切换
