ws2812b效果研究之一 cylon

ws2812b效果研究之一 cylon

名字来源于经典科幻系列《太空堡垒卡拉狄加》中机器人的眼部扫描效果。这个效果通常表现为灯光在LED灯带上来回移动,像一只眼睛在扫描一样。其实感觉就是流水灯的效果
平台是atmega 2560,三个引脚分别是vcc,gnd和信号引脚
对应于arduino中的fastled库中的cylon例子

简单的版本(跑马灯)

#include <FastLED.h>

#define NUM_LEDS 100      // LED灯数量
#define DATA_PIN 2       // 连接到LED数据引脚的Arduino引脚

CRGB leds[NUM_LEDS];     // 定义LED数组

void setup() {
  //FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);  // 初始化LED灯带
  FastLED.addLeds<WS2812,DATA_PIN,RGB>(leds,NUM_LEDS);
}

void loop() {
  cylonEffect(255, 0, 0, 10);  // 红色的Cylon效果,亮度255,延时50ms
}

void cylonEffect(uint8_t r, uint8_t g, uint8_t b, uint8_t wait) {
  // 从左到右逐个点亮LED
  for (int i = 2; i < NUM_LEDS-2; i++) {
    leds[i-2] = CRGB(r/3, g, b);
    leds[i-1] = CRGB(r/2, g, b);
    leds[i] = CRGB(r, g, b);  // 设置当前LED的颜色
    leds[i+1] = CRGB(r/2, g, b);
    leds[i+2] = CRGB(r/3, g, b);
    FastLED.show();           // 更新显示
    delay(wait);              // 延时以控制移动速度
    leds[i-2] = CRGB(0, 0, 0);
    leds[i-1] = CRGB(0, 0, 0);
    leds[i] = CRGB(0, 0, 0);  // 关闭当前LED以实现“流动”效果
    leds[i+1] = CRGB(0, 0, 0);
    leds[i+2] = CRGB(0, 0, 0);
  }
#if 1
  // 从右到左逐个点亮LED
  for (int i = NUM_LEDS - 1; i >= 0; i--) {
    leds[i] = CRGB(r, g, b);
    FastLED.show();
    delay(wait);
    leds[i] = CRGB(0, 0, 0);
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值