基于Arduino的WS2812B呼吸灯,使用多个LED灯实现呼吸灯效果代码示例
时间: 2024-03-17 12:40:47 浏览: 153
好的,这是一个基于Arduino的WS2812B呼吸灯的代码示例,可以实现多个LED灯的呼吸灯效果:
```
#include <Adafruit_NeoPixel.h>
#define LED_PIN 6
#define LED_COUNT 10
Adafruit_NeoPixel pixels(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
pixels.begin();
}
void loop() {
for(int i = 0; i < LED_COUNT; i++) {
breathe(i);
}
}
void breathe(int led) {
for(int i = 0; i < 255; i++) {
int brightness = (int)(exp(sin(i / 255.0 * PI)) * 255 - 1);
pixels.setPixelColor(led, pixels.Color(brightness, brightness, brightness));
pixels.show();
delay(10);
}
for(int i = 255; i > 0; i--) {
int brightness = (int)(exp(sin(i / 255.0 * PI)) * 255 - 1);
pixels.setPixelColor(led, pixels.Color(brightness, brightness, brightness));
pixels.show();
delay(10);
}
}
```
该代码使用了Adafruit_NeoPixel库来控制WS2812B LED灯的亮度,并使用了呼吸灯算法来实现呼吸灯效果。在`loop()`函数中,使用一个循环来控制多个LED灯的呼吸灯效果,每个LED灯都通过`breathe()`函数来实现呼吸灯效果。`breathe()`函数中使用了两个循环来实现呼吸灯效果,第一个循环从0到255逐渐增加亮度,第二个循环从255到0逐渐减少亮度。每个循环中使用了`exp()`和`sin()`函数来计算亮度值,并使用`pixels.setPixelColor()`和`pixels.show()`函数来控制LED灯的亮度。`delay()`函数用于控制呼吸灯效果的速度。
阅读全文