当您希望在Arduino Uno编程中同时执行不同函数时,使用什么代码/语句

What code/statement is used when you want the different function executed at the same time in Arduino UNO programming?

本文关键字:函数 什么 语句 代码 执行 Uno Arduino 编程 希望      更新时间:2023-10-16

我想同时在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);
  }

}

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

arduino具有并行运行任务的通常功能(它没有多线程(。但是,有一些解决方法。有关更多详细信息

幸运的是,在您的情况下,您无需并行运行循环。您可以通过在相对侧面的销钉的同时将算法重新考虑算法。这样的东西:

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

如果您想同时执行多件事,则此示例非常有用https://forum.arduino.cc/index.php?topic=223286.0不同步,它将在很小的范围内