【Arduino库之:FastLED库】

FastLED 是一款功能强大,简单易用的控制WS2812, LPD8806, 等LED光带的Arduino第三方库。

第一:基础显示

        led [ 0 ] = CRGB::Red;  //为第一个灯珠设置红色

        FastLED.show();   //这个作用才会显示

示例程序:

此程序展示了FASTLED库控制WS2821灯带的基本程序结构。

#include <FastLED.h>

#define NUM_LEDS 8

#define DATA_PIN 7

#define CLOCK_PIN 13

CRGB leds[NUM_LEDS];

CRGB myGRBcolor(0, 0, 255);

void setup() {

  FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS);

  FastLED.setBrightness(255);

}

void loop() {

  for (int i = 0; i < 255; i++) {

    myGRBcolor.r = 0;

    myGRBcolor.g =i;

    myGRBcolor.b = 0;

    fill_solid(leds, NUM_LEDS, myGRBcolor);

    FastLED.show();//更新灯带显示。

  }

  delay(1000);

}

第二:批量显示

        fill_solid(leds, number , CRGB::Color) ; //leds 是建立的对象起始地址,如果不想要从第一个LED开始显示,那就对应开始的地址 : leds + i ,对number个led点亮为color,这里的起始到结尾以及颜色都是可以修改的

        FastLED.show();  //同样要搭配这个函数

示例程序:

#include "FastLED.h"            // 此示例程序需要使用FastLED库

#define NUM_LEDS 21             // LED灯珠数量

#define LED_DT 7                // Arduino输出控制信号引脚

#define LED_TYPE WS2812         // LED灯带型号

#define COLOR_ORDER GRB         // RGB灯珠中红色、绿色、蓝色LED的排列顺序

uint8_t max_bright = 255 ;     // LED亮度控制变量,可使用数值为 0 ~ 255, 数值越大则光带亮度越高

CRGB leds[NUM_LEDS];     // 建立光带leds

//HSV方法定义颜色  

CHSV myHSVcolor(80,255,255);    //HSV方法定义颜色  myHSVcolor(色调,饱和度,明亮度)

void setup() {

  LEDS.addLeds<LED_TYPE, LED_DT, COLOR_ORDER>(leds, NUM_LEDS);  // 初始化光带

  FastLED.setBrightness(max_bright);                            // 设置光带亮度

}

void loop () {                

  //以下演示变色条反复摆动

  for (int i = 0; i < NUM_LEDS; i++){

    myHSVcolor.h+=10;  //修改HSV定义颜色的单一数值

    fill_solid(leds+i, 3, myHSVcolor);

    FastLED.show();

    delay(50);

  }  

  for (int i = NUM_LEDS; i >0 ; i--){

    myHSVcolor.h+=10;  //修改HSV定义颜色的单一数值

    fill_solid(leds+i, 3, myHSVcolor);

    FastLED.show();

    delay(50);

  }

}

第三:自定义颜色

    CRGB myRGB( 40,50,60 ) ;  //这里的40 50 60 对应RGB的值,使用时直接无缝替换Red等

    //当然这里的RGB数值并不是定义了就不变量,可以通过myRGB.r = 20 ; 设置r也就是红色为20

    //来修改r值,如果一直变化 ,可以达到渐变的效果

第四:直观显示颜色HSV

    CHSV myHSV ( 30 ,40 ,50 ) ;   //   分别对应色调,饱和度,明亮度 范围都是0~255

    //饱和度在最大值时达到本来颜色

    //同样可以修改

    myHSV.h++;

第五:彩虹rainbow显示法:

    fill_rainbow( leds , 30 , 0) ;  //分别对应对象起始地址,显示个数,色盘的起始色                (与360度 为一圈对应)

    //上面这里命令似乎有点问题,这个彩虹渐变的间隔怎样,就是每两个灯珠之间的H                值相差多少,它是一个默认值,下面这个命令就可以修改了,只是加了一个最后的参数值

    fill_ranbow( leds ,30 ,0 ,5) ; //这里的5就是差值

第六:另一个灵活的显示方式

    //上面的方式其实有一个弊端,它的亮度值是不可以调节的,如果想使用渐变的过程                中亮度值也要改变,那么就推荐使用这个函数

    fill_fradient_RGB(leds , start ,CRGB::Color , end ,CRGB::Color );

    //这个是标记从开始灯珠以及对应颜色一直到结束灯珠以及对应颜色

    //中间的fastled库会自动渐变

    //改变亮度值

    fill_gradient_RGB ( leds, 0 ,CRGB( 20,0,0), 30 , CRGB ( 20 , 20 , 30 ));

    //这里的CRGB不可以和CHSV可以替换

    //那想要替换怎么办呢

    fill_gradient( leds , start , CHSV () , end , CHSV ( ) , mode ) ;

    //SHORTEST_HUES 表示mode中沿着短的路线走,对应LONGEST_HUES

第七: 自带显示模式

    fill_palette ( leds ,30, start _color_number ,8 ,OceanColors_p,255,LINEARBLEND );      

        //就是填充色板,他有一个自带的色板

        //leds是灯带对象的名字。

        //30代表灯带的灯珠数量。

        //start_color_number 起始颜色的序号

         //8 是灯珠色差   255是亮度

         //RainbowColors_p   色板的名称

         //有很多色板, OceanColors_p ,CloudColors_p,LavaColors_p,ForestColors_p

         //RainbowColors_p,RainbowStripeColors_p,PartyColors_p,HeatColors_p

        //255是亮度。

        //LINEARBLEND 最后一个是颜色过渡效果,LINEARBLEND是一种线性过渡效果 ,非NOBLEND。

第八:逐渐熄灭灯带:

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

第九:设置灯带亮度:

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

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

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

相关文章

YOLOv8创新魔改教程(二)如何添加注意力机制

YOLOv8创新魔改教程&#xff08;二&#xff09;如何添加注意力机制 &#xff08;一&#xff09;找代码 github找各种注意力机制的代码 &#xff08;二&#xff09;融合 1.创建文件 在ultralytics/nn/attention.py创建attention.py 文件 将找到的代码粘贴进来 2.修改task…

【计算机组成原理】存储器知识

目录 1、存储器分类 1.1、按存储介质分类 1.2、按存取方式分类 1.3、按信息的可改写性分类 1.4、按信息的可保存性分类 1.5、按功能和存取速度分类 2、存储器技术指标 2.1、存储容量 2.2、存取速度 3、存储系统层次结构 4、主存的基本结构 5、主存中数据的存放 5.…

prometheus|云原生|轻型日志收集系统loki+promtail的部署说明

一&#xff0c; 日志聚合的概念说明 日志------ 每一个程序&#xff0c;服务都应该有保留日志&#xff0c;日志的作用第一是记录程序运行的情况&#xff0c;在出错的时候能够记录错误情况&#xff0c;简单来说就是审计工作&#xff0c;例如nginx服务的日志&#xff0c;kuber…

分享一下docker的使用心得

好的&#xff0c;以下是一篇关于Docker使用心得的博客&#xff0c;希望能够帮助到大家。 Docker是一款开源的容器化平台&#xff0c;它可以让开发者将应用程序以及所有依赖项打包到一个可移植的容器中&#xff0c;然后将其部署到任何Docker环境中。Docker的使用可以带来很多好处…

SpringMVC的基础知识

SpringMVC的简介 MVC是一种软件架构的思想&#xff0c;将软件按照模型、视图、控制器来划分 M&#xff1a;Model&#xff0c;模型层&#xff0c;指工程中的JavaBean&#xff0c;作用是处理数据 JavaBean分为两类&#xff1a; 一类称为实体类Bean&#xff1a;专门存储业务数据的…

Java 使用html2image将html生成缩略图图片

POM文件添加Maven依赖 <dependency><groupId>gui.ava</groupId><artifactId>html2image</artifactId><version>0.9</version></dependency> 主要代码&#xff1a; String coverPath null;try {HtmlImageGenerator imageGene…

C++-模板

目录 一.泛型编程 二.模板的分类 三.函数模板 1.函数模板的概念 2.函数模板格式 3.函数模板的原理 4.函数模板的实例化 a.隐式实例化 b.显式实例化 5.模板参数的匹配原则 四.类模板 1.类模板的定义格式 2.类模板的实例化 五.class和typename的区别 六.非类型模板…

docker配置redis插件

docker配置redis插件 运行容器redis_6390 docker run -it \ --name redis_6390 \ --privileged \ -p 6390:6379 \ --network wn_docker_net \ --ip 172.18.12.19 \ --sysctl net.core.somaxconn1024 \ -e TIME_ZONE"Asia/Shanghai" -e TZ"Asia/Shanghai"…

【大连民族大学C语言CG题库练习题】——加密文件1

【问题描述】有一种加密方法为&#xff1a;其使用一个字母串&#xff08;可以含重复字母&#xff0c;字母个数不超过50&#xff09;作为密钥。假定密钥单词串为feather&#xff0c;则先去掉密钥单词中的重复字母得到单词串feathr&#xff0c;然后再将字母表中的其它字母以反序追…

Nacos源码解读04——服务发现

Nacos服务发现的方式 1.客户端获取 1.1:先是故障转移机制判断是否去本地文件中读取信息&#xff0c;读到则返回 1.2:再去本地服务列表读取信息(本地缓存)&#xff0c;没读到则创建一个空的服务&#xff0c;然后立刻去nacos中读取更新 1.3:读到了就返回&#xff0c;同时开启定时…

nginx优雅如何优雅的接管【跨域配置】

跨域问题太常见了&#xff0c;这里不做详细赘述。文章主要想说一下&#xff0c;如何统一管理和更好的来管理 跨域配置 跨域的常见配置有两种 后台代码设置和网关设置 1、后台代码设置 以springboot为例代码如下&#xff08;水一下文章长度...&#xff09; Configuration pu…

洛谷 P2935 [USACO09JAN] Best Spot S

文章目录 [USACO09JAN] 最佳牧场 S题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 思路解析CODE [USACO09JAN] 最佳牧场 S 题目链接&#xff1a;https://www.luogu.com.cn/problem/P2935 题目描述 贝茜&#xff0c;总是希望优化她的生活&#xff0c;她发现自己…

Linux下activemq的安装与安装成功确认

一、下载 apache-activemq-5.14.0-bin.tar.gz 二、安装 将压缩包拷入linux内&#xff0c;进行解压tar -zxvf apache-activemq-5.14.0-bin.tar.gz&#xff0c;与redis、nginx不同的是&#xff0c;active解压不需要安装就可以直接启动&#xff01; 启动命令&#xff1a;./bin…

1949-2021年全国31省公路里程数据

1949-2021年全国31省公路里程数据 1、指标&#xff1a;公路里程 2、范围&#xff1a;包括31省 1978-2021年期间无缺失 3、来源&#xff1a;各省NJ、产业NJ、各省统计GB 4、指标解释&#xff1a;公路里程指报告期末公路的实际长度。 统计范围&#xff1a;包括城间、城乡间、乡…

Rocketmq架构

NameServer&#xff1a;作为注册中心&#xff0c;提供路由注册、路由踢出、路由发现功能&#xff0c;舍弃强一致&#xff0c;保证高可用&#xff0c;集群中各个节点不会实时通讯&#xff0c;其中一个节点下线之后&#xff0c;会提供另外一个节点保证路由功能。 Rocket mq name…

java学习part32StringBuffer和StringBuilder

Java中的值传递和引用传递&#xff08;详解&#xff09; - 知乎 (zhihu.com) 146-常用类与基础API-StringBuffer与StringBuilder的源码分析、常用方法_哔哩哔哩_bilibili 1. 2.扩容机制 不够用&#xff1a;长度为 原长度*22&#xff1b;如果还不够&#xff0c;那么就扩容到目…

软件工程期末复习(2)

学习资料 设计模式与软件体系结构【期末全整理答案】_软件设计模式与体系结构期末考试题_鸽子不二的博客-CSDN博客 软件设计与体系结构(第二版)部分习题_软件设计与体系结构第二版课后答案-CSDN博客 软件体系结构试题库试题和答案 - 豆丁网Docin 软件设计与体系结构复习 - CN…

当springsecurity出现SerializationException问题

当springsecurity出现SerializationException问题 01 异常发生场景 当我使用springsecurity时&#xff0c;登录成功后携带token访问接口出了问题 org.springframework.data.redis.serializer.SerializationException: Could not read JSON: Unrecognized field "userna…

多文件夹图片预处理:清除空值、重置大小、分割训练集

→ 清理空值 防止出现cannot identify image file 参考Python数据清洗----删除读取失败图片__简单版_python用pil读取图片出错删除掉-CSDN博客 #%pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python #可能需要重启jupyter import os import shutil imp…

【Unity动画】状态机添加参数控制动画切换(Animator Controller)

Unity - 手册&#xff1a;动画参数 在Unity中&#xff0c;动画状态的切换是通过Animator Controller中的过渡&#xff08;Transition&#xff09;来实现的。过渡是状态之间的连接&#xff0c;控制过渡一般都是靠调用代码参数 我们来实现一个案例&#xff1a; 创建动画状态机&a…