gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-27 23:43:28 25 4
gpt4 key购买 nike

我正在与 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() 被调用时,预期的行为是:

  • 1/3 点亮,
  • +-2 秒后,2/3 也亮起,
  • +-2 秒后,最后三分之一点亮。

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

最佳答案

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

关于c++ - Arduino 上的延迟功能未按预期运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52588676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com