以下是使用 Arduino 编写的程序,实现当接收到一个输入信号后开始计时,十五分钟后点亮 LED 灯三次:
#include <Arduino.h>
const int inputPin = 2; // 定义输入引脚
const int ledPin = 13; // 定义 LED 引脚
unsigned long startTime; // 用于记录开始时间
bool triggered = false; // 标记是否已经触发计时
void setup() {
pinMode(inputPin, INPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.begin(9600);
}
void loop() {
if (digitalRead(inputPin) == HIGH &&!triggered) { // 如果输入引脚为高电平且未触发计时
startTime = millis(); // 记录当前时间
triggered = true; // 标记已触发
}
if (triggered) {
if ((millis() - startTime) >= 15 * 60 * 1000) { // 十五分钟(15 * 60 * 1000 毫秒)后
for (int i = 0; i < 3; i++) { // 点亮 LED 灯三次
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
}
triggered = false; // 重置触发标记
}
}
}
在上述代码中,首先定义了输入引脚和 LED 引脚。在 setup
函数中,设置引脚模式并初始化 LED 为低电平,同时启动串口通信。
在 loop
函数中,当输入引脚变为高电平时且尚未触发计时,记录当前时间并标记已触发。之后,如果已经触发计时并且经过了十五分钟,就点亮 LED 灯三次,每次亮灭间隔 500 毫秒,最后重置触发标记。