编辑: 飞鸟 2018-09-28

*/ long delayTime = 600000;

long diffTime;

// 储存时间差 boolean turnOn = false;

// 代表是否点亮 LED 的变数,预设为「否」 接著设定接脚的输出与输入状态 : void setup() { pinMode(pirPin, INPUT);

// 感测器讯号脚位设定成「输入」 pinMode(ledPin, OUTPUT);

// LED 脚位设定成「输出」 pinMode(recPin, OUTPUT);

// 「录影」脚设定成「输出」 pinMode(stopPin, OUTPUT);

// 「停止」脚设定成「输出」 } 主程式回圈本体内容如下 , 只要感测到人体移动, 程式将记下启动和点亮 LED 的那一刻, 并不停地判断自从点亮 LED 后,是否已经过

10 分钟: void loop() { // 读取感测器值,类型为布林(0 或1) boolean val = digitalRead(pirPin);

// LED 尚未点亮且感测值为 1... if (turnOn == false && val == true) { turnOn = true;

// 设定为「已点亮」 oldTime = millis();

// 暂存当前时间的毫秒值 digitalWrite(ledPin, HIGH);

// 点亮 LED digitalWrite(recPin, HIGH);

// 相当於「按著」录影钮 delay(100);

// 经0.1 秒后… digitalWrite(recPin, LOW);

// 「放开」录影钮, // 构成「按一下」的动作 } if (turnOn) { // 如果 LED 目前是点亮的... // 比较现在时间与之前记录的时间 diffTime = millis() - oldTime;

// 如果时间差大於或等於延迟时间(10 分钟)... if (diffTime >= delayTime) { turnOn = false;

// 设定为「关闭 LED」 } } else { // 若设定为「关闭 LED」 digitalWrite(ledPin, LOW);

// 关闭 LED digitalWrite(stopPin, HIGH);

// 相当於「按著」停止钮 delay(100);

// 经0.1 秒后… digitalWrite(stopPin, LOW);

// 「放开」停止钮, // 构成「按一下」的动作 } }

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题