利用ESP8266 01S模块和WS2812灯珠写的炫彩跑马灯程序,A0脚连接WS2812
时间: 2023-12-06 11:39:51 浏览: 34
好的,以下是基于ESP8266 01S模块和WS2812灯珠的炫彩跑马灯程序示例:
```c++
#include <Adafruit_NeoPixel.h>
#define PIN A0 // WS2812所连接的引脚
// 设置WS2812灯珠的数量
#define LED_COUNT 16
Adafruit_NeoPixel pixels(LED_COUNT, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
pixels.begin(); // 初始化WS2812灯珠
}
void loop() {
// 调用rainbowCycle函数实现炫彩跑马灯效果
rainbowCycle(20);
}
// 炫彩跑马灯函数
void rainbowCycle(int wait) {
uint16_t i, j;
// 逐个点亮WS2812灯珠
for (j = 0; j < 256 * 5; j++) {
for (i = 0; i < pixels.numPixels(); i++) {
pixels.setPixelColor(i, Wheel(((i * 256 / pixels.numPixels()) + j) & 255));
}
pixels.show();
delay(wait);
}
}
// 将RGB颜色转换为32位整数
uint32_t Wheel(byte WheelPos) {
if (WheelPos < 85) {
return pixels.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
} else if (WheelPos < 170) {
WheelPos -= 85;
return pixels.Color(255 - WheelPos * 3, 0, WheelPos * 3);
} else {
WheelPos -= 170;
return pixels.Color(0, WheelPos * 3, 255 - WheelPos * 3);
}
}
```
以上代码中,rainbowCycle函数实现了炫彩跑马灯效果,Wheel函数将RGB颜色转换为32位整数。在loop函数中,通过调用rainbowCycle函数来实现炫彩跑马灯效果。在setup函数中,初始化WS2812灯珠。