Arduino - 不使用delay()的PIR运动传感器代码
创始人
2024-09-12 11:30:58
0

下面是一个使用Arduino的PIR运动传感器的代码示例,它不使用delay()函数来实现延迟:

// 定义PIR传感器引脚
const int pirPin = 2;

// 定义LED引脚
const int ledPin = 13;

// 定义变量来存储传感器状态和LED状态
int pirState = LOW;
int ledState = LOW;

// 定义变量来存储上一次检测到运动的时间和运动的延迟时间
unsigned long lastMotionTime = 0;
unsigned long motionDelay = 5000; // 5秒

void setup() {
  // 初始化串口通信
  Serial.begin(9600);

  // 设置PIR传感器引脚为输入
  pinMode(pirPin, INPUT);

  // 设置LED引脚为输出
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // 读取传感器状态
  int sensorValue = digitalRead(pirPin);

  // 如果传感器检测到运动
  if (sensorValue == HIGH) {
    // 更新传感器状态为高
    pirState = HIGH;

    // 记录当前时间
    unsigned long currentTime = millis();

    // 检查是否超过了运动的延迟时间
    if (currentTime - lastMotionTime >= motionDelay) {
      // 更新LED状态为高
      ledState = HIGH;
      // 更新上一次检测到运动的时间
      lastMotionTime = currentTime;
    }
  } else {
    // 如果传感器没有检测到运动,更新传感器状态为低
    pirState = LOW;
  }

  // 更新LED引脚的状态
  digitalWrite(ledPin, ledState);

  // 打印传感器状态和LED状态
  Serial.print("PIR状态: ");
  Serial.println(pirState);
  Serial.print("LED状态: ");
  Serial.println(ledState);

  // 延迟100毫秒
  delay(100);
}

这个代码示例使用digitalRead()函数来读取PIR传感器的状态,并使用millis()函数来获取当前时间。通过比较当前时间和上一次检测到运动的时间,可以实现延迟功能。当传感器检测到运动且超过了延迟时间时,LED灯会亮起。关于这个示例,你可以根据需要进行修改和扩展。

相关内容

热门资讯

带你了解!wepoker怎么买... 带你了解!wepoker怎么买辅助,拱趴大菠萝万能辅助器,一直真的有挂(真的有挂)1、起透看视 辅助...
信息共享!wepoker透视脚... 信息共享!wepoker透视脚本,wpk私人局辅助是真的吗,竟然真的是有挂(真实有挂)1、进入到是否...
玩家必看科普!wepoker底... 玩家必看科普!wepoker底牌透视,竞技联盟辅助,本来真的是有挂(有挂分析)1、点击下载安装,竞技...
查到实测!云扑克有透视吗,po... 查到实测!云扑克有透视吗,pokemmo脚本,原来真的有挂(证实有挂)1)辅助插件:进一步探索辅助大...
实测发现!wepoker破解器... 实测发现!wepoker破解器激活码,hhpoker是真的吗,确实真的是有挂(有挂细节)破解侠是真的...
技术分享!wepoker有透视... 技术分享!wepoker有透视吗,wepoker透视脚本视频,竟然是真的有挂(有挂实锤)1、玩家可以...
今日公布!hhpoker怎么开... 今日公布!hhpoker怎么开透视,wejoker免费脚本,好像真的是有挂(有挂规律)1、今日公布!...
推荐十款!wepoker有辅助... 推荐十款!wepoker有辅助功能吗,hhpoker透视脚本下载,其实是真的有挂(有挂透视)1、上手...
今日科普!德普之星私人局辅助免... 今日科普!德普之星私人局辅助免费,aapoker能控制牌吗,竟然存在有挂(有挂辅助)1、上手简单,内...
查到实测!wepoker透视版... 查到实测!wepoker透视版下载,werplan外卦神器,一直是真的有挂(有挂总结)运辅助工具,进...