Arduino的WS2812呼吸灯

这篇博客展示了如何利用Arduino和FastLED库在6号引脚控制12颗RGB LED灯。通过设置初始亮度和相邻灯珠的色差,实现渐变彩虹效果。代码中包含初始化设置、亮度变化和颜色填充,通过串口打印亮度值,并在循环中动态调整亮度,以创建视觉效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于FastLED库
6号引脚输出

#include"FastLED.h"

#define NUM_LEDS 12
#define DATA_PIN 6
#define LED_TYPE WS2812
#define COLOR_ORDER GRB

int value = 5;       //起始亮度
int deltaHue = 230;  //相邻灯珠色差
//uint8_t max_bright = value;

CRGB leds[NUM_LEDS];

void setup(){
    pinMode(DATA_PIN,OUTPUT);
    LEDS.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS);
    //FastLED.setBrightness(max_bright);
    Serial.begin(115200);
}

void loop(){
    for(; value < 50; value++){
        FastLED.setBrightness(value);
        fill_rainbow(leds, 12, 10, deltaHue); 
        FastLED.show();
        Serial.println(value);
        delay(50);
    }
    for(; value > 5; value--){
        FastLED.setBrightness(value);
        fill_rainbow(leds, 12, 10, deltaHue); 
        FastLED.show();
        Serial.println(value);
        delay(50);
    }
    delay(100);
}


当然可以!下面是一个简单的Arduino代码示例,用于控制WS2812带实现呼吸效果: ```cpp #include <Adafruit_NeoPixel.h> #define LED_PIN 6 #define LED_COUNT 30 Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); void setup() { strip.begin(); strip.show(); // 初始化带,关闭所有LED } void loop() { breatheEffect(255, 0, 0, 2000); // 呼吸效果,红色 breatheEffect(0, 255, 0, 2000); // 呼吸效果,绿色 breatheEffect(0, 0, 255, 2000); // 呼吸效果,蓝色 } void breatheEffect(uint8_t red, uint8_t green, uint8_t blue, int duration) { int brightness = 0; int fadeAmount = 5; while (brightness <= 255) { for (int i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, strip.Color(red, green, blue)); strip.setBrightness(brightness); } strip.show(); brightness += fadeAmount; delay(duration / (255 / fadeAmount)); } while (brightness >= 0) { for (int i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, strip.Color(red, green, blue)); strip.setBrightness(brightness); } strip.show(); brightness -= fadeAmount; delay(duration / (255 / fadeAmount)); } } ``` 这段代码使用了Adafruit_NeoPixel库来控制WS2812带。在`setup()`函数中,我们初始化了带并关闭所有LED。在`loop()`函数中,我们调用了`breatheEffect()`函数来实现呼吸效果。 `breatheEffect()`函数接受红、绿、蓝三个颜色通道的值以及呼吸的持续时间作为参数。它使用一个循环来逐渐增加和减小LED的亮度,从而实现呼吸效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值