我有一些问题,我的代码运行在w2812b条带上是正常的,但当我运行在条带下时,我得到了一个错误。
这就是错误
/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/queue.c:1443 (xQueueGenericReceive)- assert failed! abort() was called at PC 0x40087f1d on core 1
我尝试过查找它并改变我的迭代方式,但是到目前为止没有任何工作。 我已经发现,当我调用showStrip函数时,它会在ledDown函数中的for循环中第一次运行时中断。
代码正在上传到esp32,但我很确定这与它没有任何关系。
任何帮助都会很棒。
这是我的密码。 我目前只是把LedDown函数注释掉了。
#include "FastLED.h"
#define NUM_LEDS 100
#define LEDPIN 26
CRGB leds[NUM_LEDS];
void setup()
{
// Debug console
Serial.begin(9600);
FastLED.addLeds<WS2812B, LEDPIN, GRB>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
}
void showStrip() {
FastLED.show();
}
void setPixel(int Pixel, byte red, byte green, byte blue) {
// FastLED
leds[Pixel].r = red;
leds[Pixel].g = green;
leds[Pixel].b = blue;
}
void setAll(byte red, byte green, byte blue) {
for(int i = 0; i < NUM_LEDS; i++ ) {
setPixel(i, red, green, blue);
}
showStrip();
}
void loop() {
LedUp();
//LedDown();
}
void LedDown() {
for(int i = NUM_LEDS; i > 1; i--){
Serial.println(i);
setAll(0,0,0);
delay(100);
if(i < 33){
setPixel(i,0,0xff,0);
}else if(i < 63){
setPixel(i,0xff,0,0);
}else{
setPixel(i,0,0,0xff);
}
showStrip();
}
}
void LedUp() {
for(int i = 0; i < NUM_LEDS; i++){
setAll(0,0,0);
delay(20);
if(i < 30){
setPixel(i,0,0xff,0);
}else if(i < 60){
setPixel(i,0xff,0,0);
}else{
setPixel(i,0,0,0xff);
}
showStrip();
}
}
for(int i = NUM_LEDS; i > 1; i--)
您需要从num_leds-1
开始并转到零:
for(int i = NUM_LEDS - 1; i >= 0; i--)
因为num_leds
本身超出范围。