我的情况 我正在使用移位寄存器来控制72个LED。 每个LED都可以通过特定请求激活。将LED设置为HIGH很容易,但LED应该闪烁。通过“for”使LED闪烁不是问题。 我设法使LED闪烁,一旦闪烁它就不会在新请求进入时停止.LED应该闪烁直到新请求到来。
我的问题是如果在闪烁期间(在示例中为3次)我无法阻止它。如果我正在为另一个LED(?button1onA2)发送新的if(readString.indexOf("?button1onA2") > 0)
,只要前面的请求中的LED仍然闪烁,该请求将被忽略。
我的目标是让LED闪烁,但是当通过'readstring'的新请求到达时停止。
我的问题:
for (i = 0; i < 3; i++)
?我的代码
if (readString.indexOf("?button1onA1") > 0)
在这种情况下,传感器ID为4的LED应闪烁。
if (readString.indexOf("?button1onA1") > 0) {
for (i = 0; i < 3; i++)
{
shifter.setPin(4, HIGH);
shifter.write();
delay(200);
shifter.setPin(4, LOW);
shifter.write();
delay(200);
}
答案 0 :(得分:1)
您必须使用非阻止延迟(例如Blink Without Delay)。 一个好方法也是使用状态机(或许多)。
但从理论上讲,你可以只为LED存储位掩码,它应该闪烁,并同步闪烁(非阻塞延迟)。