1

我想同时在 Arduino UNO 中执行一个简单的循环,但我不知道使用什么语句/代码能够同时执行它。

我已经尝试过while循环并且有时间包括开始。但是由于该函数在循环中彼此分离。LED的执行是不同方向的第一个功能和第二个功能。但我希望它们同时被执行。


void loop() {
  // loop from the highest pin to the lowest:
  for (int thisPin = 2; thisPin >= 0; thisPin--) {
    // turn the pin on:
    digitalWrite(ledPins[thisPin], HIGH);
    delay(timer);
    // turn the pin off:
    digitalWrite(ledPins[thisPin], LOW);
  }


  // loop from the lowest pin to the highest:
  for (int thisPin = 0; thisPin < pinCount; thisPin++) {
    // turn the pin on:
    digitalWrite(ledPins[thisPin], HIGH);
    delay(timer);
    // turn the pin off:
    digitalWrite(ledPins[thisPin], LOW);

  }


}

事实证明,执行是从最高管脚到最低管脚的功能执行的。然后,最低的引脚到最高的引脚。而不是同时执行。

4

2 回答 2

1

Arduino 没有通常的并行运行任务的能力(它没有多线程)。但是,有一些解决方法。有关更多详细信息,请参阅https://arduino.stackexchange.com/questions/286/how-can-i-create-multiple-running-threads

幸运的是,在您的情况下,您不需要并行运行循环。您可以通过同时转动相对两侧的引脚来重新思考您的算法。像这样的东西:

for (int i = 0; i < pinCount; ++i) {
    // turn the pins on:
    digitalWrite(ledPins[i], HIGH);
    digitalWrite(ledPins[pinCount - i - 1], HIGH);

    delay(timer);

    // turn the pins off:
    digitalWrite(ledPins[i], HIGH);
    digitalWrite(ledPins[pinCount - i - 1], LOW);
}
于 2019-08-01T01:26:36.110 回答
0

如果您想同时做多件事,这里的这个例子非常有用https://forum.arduino.cc/index.php?topic=223286.0虽然它们在技术上可能不同步,但规模很小

于 2019-08-07T09:23:08.080 回答