长按5秒灯亮的单片机代码
时间: 2024-10-20 22:11:07 浏览: 17
【物联网国赛样题高职22单片机】zigbee按键长按连击呼吸灯维持当前亮度跑马灯综合代码
长按5秒灯亮的单片机代码通常涉及到中断技术和延时函数。这里以常见的Arduino Uno为例,假设我们有一个按钮连接到数字输入pin 2,并且LED连接到数字输出pin 13:
```c++
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
Adafruit_BME280 bme; //实例化BME280传感器
void setup() {
Serial.begin(9600); //初始化串口通信
bme.begin(0x76); //默认I2C地址,需要根据实际硬件调整
pinMode(2, INPUT_PULLUP); //设置按键为上拉模式,作为输入
pinMode(13, OUTPUT); //设置LED为输出
}
unsigned long lastPressTime = 0; //存储上次按下时间
const int DEBOUNCE_TIME = 500; //短按和长按的判断延迟时间(毫秒)
void loop() {
if (digitalRead(2) == LOW && ((millis() - lastPressTime) > DEBOUNCE_TIME)) { //如果按键按下并且已经过了DEBOUNCE_TIME
lastPressTime = millis(); //更新上次按下时间
unsigned long startDelay = millis(); //开始计时
while (millis() - startDelay <= 5000) { //循环直到5秒结束
digitalWrite(13, HIGH); //点亮LED
}
digitalWrite(13, LOW); //5秒结束后关闭LED
}
if (Serial.available()) {
Serial.println("Reading sensor...");
float temperature = bme.readTemperature();
float humidity = bme.readHumidity();
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" C\n");
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.println("%");
}
}
```
阅读全文