Arduino - 停止readString.indexOf循环(+闪烁LED循环中断)

时间:2016-11-25 22:56:26

标签: arduino blink

我的情况 我正在使用移位寄存器来控制72个LED。 每个LED都可以通过特定请求激活。将LED设置为HIGH很容易,但LED应该闪烁。通过“for”使LED闪烁不是问题。 我设法使LED闪烁,一旦闪烁它就不会在新请求进入时停止.LED应该闪烁直到新请求到来。

我的问题是如果在闪烁期间(在示例中为3次)我无法阻止它。如果我正在为另一个LED(?button1onA2)发送新的if(readString.indexOf("?button1onA2") > 0),只要前面的请求中的LED仍然闪烁,该请求将被忽略。

我的目标是让LED闪烁,但是当通过'readstring'的新请求到达时停止

我的问题:

  • 有一种更好的方法可以让LED在一个循环中闪烁,然后再使用 for (i = 0; i < 3; i++)
  • 我正在循环中如何打破它并继续前进到下一个LED?

我的代码

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);

        }

1 个答案:

答案 0 :(得分:1)

您必须使用非阻止延迟(例如Blink Without Delay)。 一个好方法也是使用状态机(或许多)。

但从理论上讲,你可以只为LED存储位掩码,它应该闪烁,并同步闪烁(非阻塞延迟)。