ws2812b效果研究之九 RGBSetDemo

2024-08-31 21:12

本文主要是介绍ws2812b效果研究之九 RGBSetDemo,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

效果就是两边向中间过渡,值得当成一种效果.

/// @file    RGBSetDemo.ino
/// @brief   Demonstrates how to create an LED group with CRGBArray
/// @example RGBSetDemo.ino#include <FastLED.h>
#define NUM_LEDS 100CRGBArray<NUM_LEDS> leds;void setup() { FastLED.addLeds<WS2812B, 2, RGB>(leds, NUM_LEDS); }void loop(){ static uint8_t hue;for(int i = 0; i < NUM_LEDS/2; i++) {   // fade everything outleds.fadeToBlackBy(40);// let's set an led valueleds[i] = CHSV(hue++,255,255);// now, let's first 20 leds to the top 20 leds, leds(NUM_LEDS/2,NUM_LEDS-1) = leds(NUM_LEDS/2 - 1 ,0);FastLED.delay(33);}
}

这个代码示例展示了如何使用FastLED库中的CRGBArray类来创建和操作一组LED。该代码的主要作用是在一个100个LED的阵列上创建一个动态的颜色变化效果,并使用CRGBArray类提供的功能来处理部分LED的操作。

代码解析

  1. 头文件与LED阵列定义
#include <FastLED.h>
#define NUM_LEDS 100CRGBArray<NUM_LEDS> leds;

FastLED.h:引入FastLED库,用于控制LED灯带。
NUM_LEDS:定义LED的数量为100。
CRGBArray<NUM_LEDS> leds:创建一个CRGBArray类型的对象leds,这个对象包含100个CRGB类型的LED(每个LED都有红、绿、蓝三个颜色通道)。
2. setup函数

void setup() { FastLED.addLeds<WS2812B, 2, RGB>(leds, NUM_LEDS); 
}

FastLED.addLeds<WS2812B, 2, RGB>(leds, NUM_LEDS):配置FastLED库,使其使用WS2812B类型的LED灯带,数据引脚为2,颜色顺序为RGB,并初始化leds数组。
3. loop函数

void loop(){ static uint8_t hue;for(int i = 0; i < NUM_LEDS/2; i++) {   // fade everything outleds.fadeToBlackBy(40);// let's set an led valueleds[i] = CHSV(hue++,255,255);// now, let's first 20 leds to the top 20 leds, leds(NUM_LEDS/2,NUM_LEDS-1) = leds(NUM_LEDS/2 - 1 ,0);FastLED.delay(33);}
}

3.1 状态变量与循环
static uint8_t hue:定义一个静态变量hue,用于生成不同的颜色。由于是static类型,所以它的值在每次调用loop函数时不会重置。
for循环:这个循环控制了效果的产生过程,循环次数为NUM_LEDS / 2,即50次,代表每次操作前50个LED。
3.2 逐步执行的操作
淡化当前颜色

leds.fadeToBlackBy(40);

这行代码会将LED数组中的所有LED颜色淡化,淡化程度由参数40决定。这个函数使颜色逐渐变暗,生成一种动态的颜色尾迹效果。
设置LED颜色

leds[i] = CHSV(hue++, 255, 255);

使用HSV颜色模型生成一个新的颜色值,并赋给第i个LED。hue++使得颜色在每次循环时变化,饱和度和亮度都设置为最大值255。
复制部分LED数组

leds(NUM_LEDS/2,NUM_LEDS-1) = leds(NUM_LEDS/2 - 1, 0);

这一行代码使用CRGBArray提供的operator()函数,将前50个LED的颜色值复制到后50个LED上,但顺序是倒序的。例如,第1个LED的颜色会复制到第100个LED上,第2个LED的颜色复制到第99个LED上,依此类推。
延迟控制

FastLED.delay(33);

每次循环延迟33毫秒,以控制动画的速度,使效果平滑。
代码的效果
这个代码实现了一个渐变色的动画效果。前50个LED的颜色会从一个初始值逐渐过渡到另一种颜色,并且在LED阵列的后50个LED上镜像显示。由于颜色的不断变化和淡化效果,整个LED阵列呈现出一种流动的色彩波浪效果。

总结
这个示例演示了如何利用FastLED库的CRGBArray类来简化LED阵列的操作,同时生成复杂的动画效果。代码中的颜色变化和数组部分复制操作,结合fadeToBlackBy函数,使得整个效果具有很强的视觉动感,非常适合用于LED装置的动态光效展示。

这篇关于ws2812b效果研究之九 RGBSetDemo的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125005

相关文章

关于Java内存访问重排序的研究

《关于Java内存访问重排序的研究》文章主要介绍了重排序现象及其在多线程编程中的影响,包括内存可见性问题和Java内存模型中对重排序的规则... 目录什么是重排序重排序图解重排序实验as-if-serial语义内存访问重排序与内存可见性内存访问重排序与Java内存模型重排序示意表内存屏障内存屏障示意表Int

基于Python实现PDF动画翻页效果的阅读器

《基于Python实现PDF动画翻页效果的阅读器》在这篇博客中,我们将深入分析一个基于wxPython实现的PDF阅读器程序,该程序支持加载PDF文件并显示页面内容,同时支持页面切换动画效果,文中有详... 目录全部代码代码结构初始化 UI 界面加载 PDF 文件显示 PDF 页面页面切换动画运行效果总结主

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

使用Python实现生命之轮Wheel of life效果

《使用Python实现生命之轮Wheeloflife效果》生命之轮Wheeloflife这一概念最初由SuccessMotivation®Institute,Inc.的创始人PaulJ.Meyer... 最近看一个生命之轮的视频,让我们珍惜时间,因为一生是有限的。使用python创建生命倒计时图表,珍惜时间

防近视护眼台灯什么牌子好?五款防近视效果好的护眼台灯推荐

在家里,灯具是属于离不开的家具,每个大大小小的地方都需要的照亮,所以一盏好灯是必不可少的,每个发挥着作用。而护眼台灯就起了一个保护眼睛,预防近视的作用。可以保护我们在学习,阅读的时候提供一个合适的光线环境,保护我们的眼睛。防近视护眼台灯什么牌子好?那我们怎么选择一个优秀的护眼台灯也是很重要,才能起到最大的护眼效果。下面五款防近视效果好的护眼台灯推荐: 一:六个推荐防近视效果好的护眼台灯的

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww

生信圆桌x生信分析平台:助力生物信息学研究的综合工具

介绍 少走弯路,高效分析;了解生信云,访问 【生信圆桌x生信专用云服务器】 : www.tebteb.cc 生物信息学的迅速发展催生了众多生信分析平台,这些平台通过集成各种生物信息学工具和算法,极大地简化了数据处理和分析流程,使研究人员能够更高效地从海量生物数据中提取有价值的信息。这些平台通常具备友好的用户界面和强大的计算能力,支持不同类型的生物数据分析,如基因组、转录组、蛋白质组等。

开题报告中的研究方法设计:AI能帮你做什么?

AIPaperGPT,论文写作神器~ https://www.aipapergpt.com/ 大家都准备开题报告了吗?研究方法部分是不是已经让你头疼到抓狂? 别急,这可是大多数人都会遇到的难题!尤其是研究方法设计这一块,选定性还是定量,怎么搞才能符合老师的要求? 每次到这儿,头脑一片空白。 好消息是,现在AI工具火得一塌糊涂,比如ChatGPT,居然能帮你在研究方法这块儿上出点主意。是不

研究人员在RSA大会上演示利用恶意JPEG图片入侵企业内网

安全研究人员Marcus Murray在正在旧金山举行的RSA大会上公布了一种利用恶意JPEG图片入侵企业网络内部Windows服务器的新方法。  攻击流程及漏洞分析 最近,安全专家兼渗透测试员Marcus Murray发现了一种利用恶意JPEG图片来攻击Windows服务器的新方法,利用该方法还可以在目标网络中进行特权提升。几天前,在旧金山举行的RSA大会上,该Marcus现场展示了攻击流程,

Science Robotics 首尔国立大学研究团队推出BBEX外骨骼,实现多维力量支持!

重复性举起物体可能会对脊柱和背部肌肉造成损伤,由此引发的腰椎损伤是工业环境等工作场所中一个普遍且令人关注的问题。为了减轻这类伤害,有研究人员已经研发出在举起任务中为工人提供辅助的背部支撑装置。然而,现有的这类装置通常无法在非对称性的举重过程中提供多维度的力量支持。此外,针对整个人体脊柱的设备安全性验证也一直是一个缺失的环节。 据探索前沿科技边界,传递前沿科技成果的X-robot投稿,来自首尔国立