Arduino 上的延迟功能未按预期运行

delay function on Arduino doesn't behave as expected

我正在与 Arduino 一起使用可寻址功能区。关键是在不同的时刻点亮我丝带的不同部分。为此,我使用了如下函数延迟:

void un_a()  //first third of ribbon length
{      
  for (uint16_t i = 0; i < N; i++) {
  strip.setPixelColor(i, strip.Color(100,255,100));
  }
  strip.show();
}

void deux_a()    //second third of ribbon length
{
  for (uint16_t i = N; i < 2*N; i++) {
    strip.setPixelColor(i, strip.Color(100,255,100));
  }
  strip.show();
}

void trois_a()    //last third of ribbon length
{
  for (uint16_t i = 2*N; i < 3*N; i++) {
    strip.setPixelColor(i, strip.Color(100,255,100));
  }
  strip.show();
}

void wave(){
  void un_a();
  delay(2000);
  void deux_a();
  delay(2000);
  void trois_a();
}

所以当调用 wave() 时,预期的行为是:

实际上,它只是遮挡和点亮了第一个三分之一的一部分。
我一次又一次地四处走动,我看不出我错过了什么。有什么线索吗?

void un_a();

这是一个function declaration。它告诉我们,这样的符号 un_a 存在,并且它是类型 void (*)().
的函数 如果你想调用一个函数,你使用expresssion statement。请注意,它在开头没有像声明中那样的返回类型:

int a; // declaration
a = 1; // statement
un_a(); // statement, this executed the un_a function
1 + 1; // another statement, this adds 1 + 1
int func(int b); // declaration, this does nothing, just the compiler knows that a function `func` exists
int (*(*func2)(int a, int (*(*)(int arr[a]))[a]))[5]; // another declaration
(void)func2(5, (int (* (*)(int *))[5])0); // statement

尝试调用函数:

void wave(){
  un_a();
  delay(2000);
  deux_a();
  delay(2000);
  trois_a();
}