系统:WIN7
硬件:合宙ESP32C3 单核、160mhZ,
软件:
1、使用 FastLED ,wifi 库
2、Vscode 搭建 Platformio开发平台
场景一、合宙esp32c3单独连接wifi,能正常连接wifi。
场景二、合宙esp32c3单独控制12颗ws2812灯珠时,ws2812的颜色、亮度均正常。
场景三、连接wifi,并同时控制12颗ws2812灯珠显示蓝色,会出现灯珠闪烁,一会蓝灯、一会绿灯、一会红灯?
下面是代码,哪位有经验的朋友帮我看看。谢谢!
#include
#include
#include
/*********************以下为ws2812定义*********************/
#define DATA_PIN 18
//esp32c3驱动ws2812可用引脚 7,5,4,18,1,0
#define LED_TYPE WS2812
#define COLOR_ORDER GRB
#define NUM_LEDS 12 //led的个数
CRGB leds[NUM_LEDS]; //建立LED光带
unsigned char max_bright=2; //光带亮度0~255
CHSV MYHSVCOLOR(100,200,200);//自定义HSV颜色
//CRGB MYRGBCOLOR(100,200,200);//自定义RGB颜色
/*********************以下为wifi定义*********************/
const char * ID = "huawei5z";
const char * PASSWORD = "12349876";
void setup()
{
Serial.begin(9600);
delay(100);
LEDS.addLeds(leds, NUM_LEDS); //启动灯带
FastLED.setBrightness(max_bright);
Serial.println("WiFi:");
Serial.println(ID);
Serial.println("PASSWORLD:");
Serial.println(PASSWORD);
WiFi.begin(ID,PASSWORD);
while(WiFi.status()!=WL_CONNECTED)
{
delay(500);
Serial.println("正在连接...");
}
Serial.println("连接成功!");
}
void loop()
{
fill_solid(leds, 12, CRGB::Blue);
FastLED.show();
delay(300);
}
总算弄完了,回来做个记号
解决方法有2种
方法一:不更换平台,继续使用paltformio,但不使用FastLED库,而是用Adafruit_NeoPixel库驱动ws2812;
方法二:更换平台,使用乐鑫官方的IDF。
个人分析:FastLED库的底层代码与wifi库的底层有外设上的冲突。
该回答内容部分引用GPT,GPT_Pro更好的解决问题
这个问题可能是由于控制ws2812彩灯和连接WiFi同时进行所导致的,具体原因可能是 ESP32C3 单核、160mhZ 的处理速度不够,无法同时进行控制ws2812和连接WiFi的任务,导致灯珠闪烁。要解决这个问题,可以尝试以下几种方法:
该回答引用GPTᴼᴾᴱᴺᴬᴵ
这可能是由于ESP32C3开发板的WiFi和ws2812灯珠都使用了ESP32芯片的时序控制器,导致控制冲突,从而影响ws2812灯珠的正常工作。为了避免这个问题,你可以尝试以下解决方法:
另外,在代码中,可以尝试将WiFi的连接过程放在setup()函数中,避免在loop()函数中频繁地连接WiFi,从而提高代码的效率。同时,为了避免ws2812灯珠的电源不足导致的显示不正常,可以使用电源稳压器或电容器等电路进行稳压。