gpt4 book ai didi

c++ - Arduino 控制 ledstrip 与 neopixel 卡住

转载 作者:太空宇宙 更新时间:2023-11-04 12:34:18 26 4
gpt4 key购买 nike

我尝试用我的 pi 3 控制 rgb ws2812b led 灯带。效果很好。现在我想用我的 Arduino Nano 来做。控件本身有效。如果我将一些代码放入循环函数中,一切正常。但是如果我想通过函数调用代码,比如 void colorWipe(){ change color } 并且我在循环中调用 colorWipe(),它不再改变颜色。为什么???

代码如下:

#include <Adafruit_NeoPixel.h>
#define shortStrip 2
#define longStrip 3
#define led_count_short 23
#define led_count_long 277

Adafruit_NeoPixel strip_short = Adafruit_NeoPixel(led_count_short, shortStrip, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip_long = Adafruit_NeoPixel(led_count_long, longStrip, NEO_GRB + NEO_KHZ800);

void setup(){
Serial.begin(9600);

strip_short.begin();
strip_short.setBrightness(50);
strip_short.show();
Serial.println("Short strip is running!");
delay(50);

strip_long.begin();
strip_long.setBrightness(50);
strip_long.show();
Serial.println("Long strip is running!");
delay(50);
}

void loop(){
colorWipe(10, strip_long, led_count_long, 255, 255, 255);
Serial.println("Finished Long");
delay(1000);
colorWipe(10, strip_long, led_count_long, 255, 0, 0);
Serial.println("This too Long");
delay(1000);
}

void colorWipe(uint8_t wait, Adafruit_NeoPixel strip, int led_count, int r, int g, int b){
Serial.print("1");
for(int i = 0; i < led_count; i++){
strip.setPixelColor(i, strip.Color(r,g,b));
strip.show();
delay(wait);
}
Serial.print("2");
return;
}

是的,我有 2 个 LED 灯条,但循环中只调用了 1 个。我的串行监视器打印一切都很好,但颜色没有改变。我试过多种颜色。第一个 colorWipe() 起作用,之后的所有 colorwipes 都不起作用。

求助

非常感谢

最佳答案

您尝试过使用引用吗?将 colorWipe 更改为

void colorWipe(uint8_t wait, Adafruit_NeoPixel & strip, int led_count, int r, int g, int b)

我的猜测是,当您复制strip 对象时,将无法再访问setPixelColorshow。您应该使用您在代码开头声明的对象,这可以使用引用来完成。

关于c++ - Arduino 控制 ledstrip 与 neopixel 卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57099084/

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