有 4 个 LED。我需要 1 个 LED 燃烧 8 秒,另外 3 个 LED 燃烧 500 毫秒。怎么做?编码:
byte r1 = 2;
byte y1 = 3;
byte b1 = 4;
byte r2 = 5;
void setup() {
pinMode(r1, OUTPUT);
pinMode(y1, OUTPUT);
pinMode(b1, OUTPUT);
pinMode(r2, OUTPUT);
}
void Svet1()
{
digitalWrite(r2, LOW);
digitalWrite(r1, HIGH);
}
void Svet2()
{
digitalWrite(r1, LOW);
digitalWrite(y1, HIGH);
}
void Svet3()
{
digitalWrite(y1, LOW);
digitalWrite(b1, HIGH);
}
void Svet4()
{
digitalWrite(b1, LOW);
digitalWrite(r2, HIGH);
}
void loop() {
}
这是为此目的使用看门狗计时器的库的一部分
如果您在开头插入它或将其带到单独的库中,那么您可以这样做
我会这样做:创建一个包含两个字段的结构。第一个:LED 状态的描述(开/关)第二个:此状态的持续时间。将所有状态合并到一个数组中。在计时器处理程序中,我创建了一个与当前状态持续时间进行比较的计数器。如果小于,则通过递增计数器退出处理程序。如果相等(或更多) - 计数器为零,进入下一个状态,点亮结构中写入的 LED。好吧,当然,我们需要一个带有当前状态编号的静态变量。这是一个代码草图:
曾几何时,我从事自动售货,我还必须编写一个轻量级库,它不会因延迟而阻塞主流
https://github.com/latdev/eugenetaskstool
这是一个使用示例