探索互联世界的灯光艺术:FastLED库详细介绍及应用实例

news2024/12/26 11:53:23

感谢太极创客提供素材

FastLED库-太极创客
太极创客B站视频
在这里插入图片描述

文章目录

    • 基础程序
    • 为单一灯赋值
    • fill_solid( 目标, 填充数, 颜色) – 将LED光带设置为同一颜色
    • fill_rainbow(目标, 填充数, 开始颜色, 色差)– 将LED光带设置为渐变彩虹色
    • fill_gradient_RGB(目标, 开始位置, 开始颜色, 结束位置, 结束颜色); – 将LED光带设置为渐变色
    • fill_palette (目标灯, 灯数量, 开始位置, 颜色增量, 预设调色板, 亮度, 过渡效果 ) – 使用色板将LED光带设置为渐变色
    • FastLED.show – 更新LED显示
    • ColorFromPalette – 获得指定色板中的颜色
    • fadeToBlackBy( 目标, 灯数量, 降低数量) 逐渐熄灭LED光带
    • FastLED.setBrightness – 设置LED光带亮度
    • beatsin8 – 正弦函数
    • random8 – 随机函数
    • EVERY_N_SECONDS – 定时执行程序内容(时间间隔单位以秒计算)
    • EVERY_N_MILLISECONDS – 定时执行程序内容(时间间隔单位以毫秒计算)
    • 调色板palette
    • 废话

基础程序

后面基础程序都一样,只要替换fill_solid(leds, 30, CRGB::Red);显示内容。后面省略基础程序

/*
 * fillSolid
 * 太极创客 http://www.taichi-maker.com/
 * 03/01/2018
 * 
 * =====================功能说明=====================
 * 使用Arduino Uno开发板通过FastLED库控制WS2812光带。
 * fillSolid库函数使用说明。 
 * 
 * 本示例程序需要Arduino第三方库FastLED。如有需要,可通过以下链接下载该库:
 * http://www.taichi-maker.com/homepage/download/#library-download
 * 
 * 如需了解如何为Arduino IDE安装第三方库,请参见以下链接地址的视频教程:
 * http://www.taichi-maker.com/homepage/reference-index/arduino-library-index/install-arduino-library/
 *  
 * =====================电路连接======================
 * 此示例程序中,Arduino输出控制信号引脚为9号引脚。
 * 
 * 如需获得详细电路连接说明图,请参阅太极创客网站中
 * 有关WS2812 LED光带方面的相关内容,太极创客网站地址:
 * 
 *  http://WWW.TAICHI-MAKER.COM
 * 
 * 此示例程序为配合太极创客制作的
 * 《零基础入门学用ARDUINO教程-智能应用篇》使用
 */
#include "FastLED.h"            // 此示例程序需要使用FastLED库
 
#define NUM_LEDS 30             // LED灯珠数量
#define LED_DT 9                // Arduino输出控制信号引脚
#define LED_TYPE WS2812         // LED灯带型号
#define COLOR_ORDER GRB         // RGB灯珠中红色、绿色、蓝色LED的排列顺序
 
uint8_t max_bright = 128;       // LED亮度控制变量,可使用数值为 0 ~ 255, 数值越大则光带亮度越高
 
CRGB leds[NUM_LEDS];            // 建立光带leds
 
void setup() { 
  LEDS.addLeds<LED_TYPE, LED_DT, COLOR_ORDER>(leds, NUM_LEDS);  // 初始化光带
  
  FastLED.setBrightness(max_bright);                            // 设置光带亮度
}
 
void loop () {       
  // fill_rainbow演示
  fill_solid(leds, 30, CRGB::Red);//将leds光带的从头数30个灯珠设置为红颜色。
  FastLED.show();
  delay(25); 
} 

为单一灯赋值

leds[0] = CRGB::Red;

fill_solid( 目标, 填充数, 颜色) – 将LED光带设置为同一颜色

fill_solid(leds, 30, CRGB::Red)

以上语句将leds光带的从头数30个灯珠设置为红颜色。

fill_solid(leds+5, 3, CRGB::Red);

以上语句将leds光带的从头数第6个灯珠开始算起的3个灯珠设置为红颜色。

fill_rainbow(目标, 填充数, 开始颜色, 色差)– 将LED光带设置为渐变彩虹色

fill_rainbow(leds, 30, beginHue, deltaHue)

以上语句将leds光带的从头数30个灯珠设置为渐变彩虹色。beginHue参数为起始色调数值。deltaHue为相邻LED灯珠色调差。

fill_rainbow(leds+5, 30, 0, 1)

以上语句将leds光带的从头数30个灯珠设置为渐变彩虹色。起始色调数值为0。相邻LED灯珠色调差为1。

fill_gradient_RGB(目标, 开始位置, 开始颜色, 结束位置, 结束颜色); – 将LED光带设置为渐变色

fill_gradient_RGB(leds, 0,          CRGB::Red, 29, CRGB::Blue)

以上语句将leds光带的从头数30个灯珠设置为渐变色。灯带头部起始颜色为红色。灯带尾部结束颜色为蓝色。灯带中间为由红色到蓝色的渐变色。

fill_gradient(leds, 0, CHSV(50, 255,255) , 29, CHSV(150,255,255), SHORTEST_HUES)

以上语句将leds光带的从头数30个灯珠设置为渐变色。灯带头部起始颜色为HSV(50, 255,255)色彩。灯带尾部结束颜色为CHSV(150,255,255)色彩。灯带颜色过度采用短色调过渡方式。

fill_gradient(leds, 0, CHSV(50, 255,255) , 29, CHSV(150,255,255), LONGEST_HUES)

以上语句将leds光带的从头数30个灯珠设置为渐变色。灯带头部起始颜色为HSV(50, 255,255)色彩。灯带尾部结束颜色为CHSV(150,255,255)色彩。灯带颜色过度采用长色调过渡方式。

fill_palette (目标灯, 灯数量, 开始位置, 颜色增量, 预设调色板, 亮度, 过渡效果 ) – 使用色板将LED光带设置为渐变色

fill_palette (leds, 30, 0, 8, OceanColors_p, 255, LINEARBLEND )

以上语句将leds光带的从头数30个灯珠设置为渐变色。渐变色的色彩全部来自FastLED预设色板OceanColors_p。灯带头部第一个灯珠的色板色彩序号为0,相邻的两个灯珠见色板色彩序列号差8。色彩过渡为线性过渡效果。

fill_palette(leds+5, 15, 31, 5, ForestColors_p, 255, LINEARBLEND );

以上语句将leds光带从头数的第6个灯带开始15个灯珠设置为渐变色。渐变色的色彩全部来自FastLED预设色板ForestColors_p。起始色板色彩序号为31,相邻的两个灯珠见色板色彩序列号差5。色彩过渡为线性过渡效果。

FastLED库配有8种预设色板。:haiy
CloudColors_p 云
LavaColors_p 熔岩
OceanColors_p 海洋
ForestColors_p 森林
RainbowColors_p 彩虹
RainbowStripeColors_p
PartyColors_p 派对
HeatColors_p 热

FastLED.show – 更新LED显示

在使用FastLED库控制LED时,我们每一次更新了LED的颜色设置以后,都需要 FastLED.show(); 执行语句指令才能将我们刚刚设置好的LED颜色在LED灯珠上显示出来。这一点非常重要,请在使用使用FastLED库控制LED时务必注意这一点。

ColorFromPalette – 获得指定色板中的颜色

leds[0] = ColorFromPalette( RainbowColors_p, 0, 128, LINEARBLEND);

以上语句将leds光带的第一个灯珠设置为RainbowColors_p色板中颜色序号为0的颜色(红色)。LED亮度为128。色彩过渡为线性过渡效果(LINEARBLEND)。

leds[9] = ColorFromPalette( OceanColors_p, 120, 255, LINEARBLEND);

以上语句将leds光带的第十个灯珠设置为OceanColors_p色板中颜色序号为120的颜色。LED亮度为255。色彩过渡为线性过渡效果(LINEARBLEND)。

fadeToBlackBy( 目标, 灯数量, 降低数量) 逐渐熄灭LED光带

#define twinkleInterval  10    //  闪烁间隔时间 (毫秒)
#define twinkleChance 800        //  闪烁数量,数值越大闪烁越多(0-255) 
void loop() {      
  int pos = random8(NUM_LEDS);
  EVERY_N_MILLISECONDS( twinkleInterval ) { 
    if( random8() < twinkleChance) {
      leds[pos] = ColorFromPalette( PartyColors_p, random8(255), 128, LINEARBLEND);
    }   
  }
  EVERY_N_MILLISECONDS( 20 ) { 
    fadeToBlackBy( leds, NUM_LEDS, 10);
  }    
  FastLED.show(); 
  delay(50);       
}
fadeToBlackBy( leds, 30, 10);//渐灭
fadeLightBy( leds, 30, 10);//渐亮

以上语句将leds光带的30个灯珠亮度调低10。(注:LED亮度值可选数值范围为0 – 255)

FastLED.setBrightness – 设置LED光带亮度

FastLED.setBrightness(128);

以上语句将LED亮度设置为128。该亮度为最大亮度(255)的一半左右。

beatsin8 – 正弦函数

beatsin8(beats_per_minute, lowest, highest);

在这里插入图片描述

random8 – 随机函数

random8();

以上语句将返回0-255之间的随机数值。

random8(10);

以上语句将返回0-9之间的随机数值。

EVERY_N_SECONDS – 定时执行程序内容(时间间隔单位以秒计算)

EVERY_N_SECONDS(10

以上函数所包含的程序内容将定时执行,执行时间间隔为10秒钟。

EVERY_N_SECONDS(1

以上函数所包含的程序内容将定时执行,执行时间间隔为1秒钟。

EVERY_N_MILLISECONDS – 定时执行程序内容(时间间隔单位以毫秒计算)

EVERY_N_MILLISECONDS(100

以上函数所包含的程序内容将定时执行,执行时间间隔为100毫秒。

EVERY_N_MILLISECONDS(500

以上函数所包含的程序内容将定时执行,执行时间间隔为500毫秒。

调色板palette

FastLED官网

废话

导语:在当代科技的融合中,灯光艺术正变得越来越受欢迎。FastLED库作为一个功能强大的灯带控制库,为创造、探索和实现令人惊叹的灯光效果提供了无限可能。本博客将详细介绍FastLED库的功能和特点,并展示一些令人惊叹的实际应用实例。

正文:

  1. FastLED是什么?

    FastLED是一个适用于Arduino和其他微控制器平台的灯带控制库,它提供了丰富的功能和灵活的选项,为用户创建出色的灯光效果提供了良好的支持。

  2. FastLED的特点和功能

    2.1 灵活性:FastLED库允许用户控制各种类型的LED灯带,包括单色、RGB、RGBW和更多类型。它还支持不同的通信协议,如PWM、SPI等。

    2.2 强大的效果控制:FastLED提供了丰富的效果函数和算法,包括渐变、闪烁、呼吸灯、彩虹、火焰效果等。用户可以轻松地创建各种复杂的灯光效果。

    2.3 可视化编辑器:FastLED库还提供了一个可视化的在线编辑器,使用户能够通过简单的拖拽和选取来创建和调整灯光效果,无需深入编程。

    2.4 兼容性:FastLED库可以在多种平台上运行,并与其他常用的Arduino库和功能兼容。用户可以轻松集成FastLED库到自己的项目中。

  3. FastLED应用实例

    3.1 萤火虫灯效:通过使用FastLED库中的随机效果和亮度变化,可以模拟出萤火虫在夜晚飘扬的效果。这种灯光效果可以用于室内装饰、节日庆祝等场景。

    3.2 音乐可视化:结合外部音频输入,通过FastLED库可以实现灯带的音乐可视化效果。LED灯带可以根据音频节奏和音量的变化,呈现跳动、闪烁等动态的灯光效果。

    3.3 艺术装置:FastLED库为创意艺术家和设计师提供了丰富的灯光效果控制选项,可以用于艺术装置、舞台设计、展览等项目。通过FastLED库,用户可以实现灯光的无限创造和表达。

    3.4 氛围照明:利用FastLED库的渐变效果、色彩调节等功能,可以打造出舒适、温馨的氛围照明。这种灯光效果可以用于家庭、酒吧、咖啡厅等场景,营造出不同的氛围和体验。

结尾:

FastLED库是一个令人兴奋和创意无限的灯带控制库,为灯光艺术家、创意爱好者和设计师提供了许多创造的机会。通过灵活的功能和丰富的效果选项,FastLED库让用户能够轻松创造出惊人的灯光效果。无论是在室内装饰、舞台演出还是艺术装置中,FastLED库都将成为你探索互联世界的灯光艺术的得力助手。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1045457.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSS box-shadow阴影

1、语法 box-shadow: h-shadow v-shadow blur spread color inset; 值描述h-shadow必需的。水平阴影的位置。允许负值v-shadow必需的。垂直阴影的位置。允许负值blur可选。模糊距离spread可选。阴影的大小color可选。阴影的颜色。在CSS颜色值寻找颜色值的完整列表inset可选。…

使用 Sealos 构建低成本、高效能的私有云

这个时候谈论私有云似乎有点反直觉&#xff1f;大部分人认知不是上云是大趋势嘛&#xff1f;我也比较认可上云&#xff0c;不过私有云也是云&#xff0c;今天给大家带来一个新的选择 —— 用云&#xff0c;只需一个 Sealos 就够了。 看看我们怎么做到更低的成本&#xff0c;更…

亚马逊美国站自行车电动自行车儿童自行车的合规认证GCC+UL2849

GCC合规性认证16CFR1512和 UL 2849 随着道路变得更加拥挤&#xff0c;停车位的减少&#xff0c;骑自行车上班已成为一种不错的选择。它不仅为骑手提供体育锻炼&#xff0c;还为骑手提供了更为灵活的通勤&#xff0c;因此更加轻便的电动助力自行车应运而生。需求不断增长&…

信息检索与数据挖掘 | (三)容错式检索

文章目录 &#x1f4da;通配符查询&#x1f407;单个通配符查询&#x1f407;一般的通配符查询&#x1f407;k-gram 索引 &#x1f4da;拼写校正&#x1f407;词项独立的校正方法&#x1f955;编辑距离方法&#x1f955;k-gram重合度法 &#x1f407;上下文敏感的校正方法 &…

Excel实现只针对某项字符第一次出现的位置分列

取第一次出现左边数值 B1LEFT(A1,SEARCH(".",A1)-1) 取第一次出现右边数值 C1RIGHT(A1,LEN(A1)-SEARCH(".",A1)) 公式如图&#xff1a;

MySQL(7) Innodb 原理和日志

一、MySQL结构 客户端 server层 查询缓存&#xff08;5.7&#xff09; 连接器 分析器 优化器 执行器 引擎层 二、一条update操作mysql的流程 三、MySQL的日志 &#xff08;1&#xff09;redo log 保证MySQL 持久性的关键&#xff0c;如果MySQL宕机&#xff0c;buffer pool…

学会这一招,轻松玩转 app 中混合应用自动化测试

♥ 前 言 现在的 app 中越来越多的页面通过 H5 来做了&#xff0c;理由很简单&#xff0c;不需要升级 app 就能让用户使用新的功能。这就苦了我们测试工程师了&#xff0c;混合应用自动化不会玩。今天咱们来聊一聊 app 中混合应用自动化怎么做。 一、环境准备 appium1.21.0…

虹科案例 | 虹科PLC助力纯水冷却机实现精准温度控制

文章来源&#xff1a;虹科工业控制事业部 点击阅读原文&#xff1a;https://mp.weixin.qq.com/s/3gv4M82YhDHCo_cq78EanA 案例概况 客户&#xff1a;Efficient Energy 应用&#xff1a;纯水冷却机 &#xff08;一&#xff09;应用背景 制冷技术在许多不同行业中得到广泛应用&…

仿射变换案例

1.什么是仿射变换 仿射变换(Affine Transformation)其实是另外两种简单变换的叠加:一个是线性变换,一个是平移变换 仿射变换变化包括缩放(Scale、平移(transform)、旋转(rotate)、反射(reflection,对图形照镜子)、错切(shear mapping,感觉像是一个图形的倒影),原来的…

深入理解 pytest.main():Python 测试框架的核心功能解析

前言 笔者平常运行pytest用例时&#xff0c;通常使用命令行方式&#xff0c;像这样 pytest -v pxl/test_dir/test_demo.py::TestDemo::test_my_var&#xff0c;执行某一条case&#xff0c;但每次命令行敲也挺麻烦的。那如何在python代码中调用pytest呢&#xff1f;带着疑问一…

github搜索技巧

指定语言 language:java 比如我要找用java写的含有blog的内容 搜索项目名称包含关键词的内容 vue in:name 其他如项目描述跟项目文档&#xff0c;如下 组合使用 vue in:name,description,readme 根据Star 或者fork的数量来查找 总结 springboot vue stars:>1000 p…

记录使用iText7查找PDF内容关键字坐标,加盖电子签名、印章

一、前言 项目以前签字都是由C端那边进行合成操作&#xff0c;最近项目要求把那块功能&#xff0c;由后端进行实现&#xff0c;其中包含坐标、关键字、任意位置进行签字操作&#xff0c;坐标是最容易实现的&#xff0c;曾经也写过类似的功能在&#xff08;添加图片印章到PDF&a…

解锁工业 4.0 元宇宙:AR/VR、AI 和 3D 技术如何为下一次工业革命提供动力

原创 | 文 BFT机器人 沉浸式混合现实和由虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09;组成的扩展现实技术仍然是业务创新和扩张的关键驱动因素。通过改变公司的运营、与客户互动和实现目标的方式&#xff0c;这一技术解决方案集已在多个行业产生了…

认证-authentication 和授权-authorization

就好比你可以刷卡进去xxx大厦&#xff08;认证是本公司职员&#xff09;&#xff0c;但无法刷卡进入金融部门&#xff0c;或 实验部门&#xff08;因为没有授权&#xff09;

无线通信——Mesh自组网特点

Mesh&#xff0c;它的中文叫作无线网格状网络。作为当下最为灵活、高效、便捷的扩大信号覆盖的通信解决方案之一&#xff0c;Mesh组网得到了极大推广。其主要应用于&#xff1a;&#xff08;无人机/车/船、特种机器人、巡检、应急安防&#xff08;如城市应急、抢险救援、城区覆…

蜜雪冰城涨价怒赞无数 雪王张红超卷出一条阳道

作者&#xff1a;积溪 简评&#xff1a;最近雪王涨价一元登上了热搜&#xff0c;但评论区却是一片和谐&#xff0c;雪王的魅力究竟是如何养成的&#xff1f;#蜜雪冰城 #雪王 #张红超 #奶茶 别的品牌涨价&#xff0c;只有吐槽声一片&#xff1b;但它涨价&#xff0c;却是网友们…

如何在前端项目中管理依赖关系?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用包管理工具⭐ 使用版本控制系统⭐ 使用依赖管理工具⭐ 使用CDN⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对W…

MyBatis Generator 代码自动生成器

一、什么是逆向工程 Mybatis的逆向工程就是由代码生成器生成我们需要的代码和映射文件。我们在编写Mybatis程序时&#xff0c;基本都是围绕着pojo类&#xff0c;Mapper接口&#xff0c;Mapper.xml文件等文件来进行的。如果实际开发中数据库的表特别多&#xff0c;那么我们需要手…

超全超详细的Redis笔记-数据类型及其使用、主从复制、哨兵模式、缓存穿透、击穿、雪崩

文章目录 狂神聊Redis1、Nosql概述1.1、为什么要用Nosql1.2、什么是NoSQL1.3、NoSQL的四大分类 2、Redis 入门2.1、概述2.2、Windows 安装2.3、Linux安装2.4、测试性能2.5、Redis基础知识 3、五大基本数据类型3.1、Redis-Key3.2、String3.3、List3.4、Set3.5、Hash&#xff08;…

基于SSM的实习管理系统

基于SSM的实习管理系统、前后端分离 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 管理员界面 教师 学生 研究背景 基于SSM的实习管理系统是一个基于Spring、Spring…