01.FastLED库基础

news2025/1/13 19:46:58

FastLED库基础

FastLED库HSV颜色


HSV颜色基本概念

HSV颜色简介

HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色表达方法。该方法中的三个参数分别是:色调(H),饱和度(S),明亮度(V)。

HSV参数

色调H

在这里插入图片描述

色调参数取值范围为0~255。如上图所示,从红色开始按逆时针方向计算。红色为0,绿色为85,蓝色为170。

饱和度S
饱和度S表示颜色接近光谱色的程度。取值范围为0~255,值越大,颜色越饱和(越接近本色)。值越小,颜色越接近白色。当数值为零时,颜色为白色。

明亮度V
明亮度V表示颜色明亮的程度,取值范围为0~255。对于FastLED库来说,该数值越大,则控制光带的亮度越亮。反之数值越小,则控制光带的亮度越低。当数值为零时,光带完全熄灭。


使用HSV颜色控制光带

语法

CHSV (hVal, sVal, vVal)

CHSV HSVcolorName(hVal, sVal, vVal)

参数

hVal – 色调数值
sVal – 饱和度数值
vVal – 明亮度数值

备注

HSVcolorName.h 代表HSVcolorName颜色的色调数值。可对其进行操作。

Quick Examples 简单示例

How easy is the library to use? Here’s a quick example providing some blinking code:
该库的易用性如何?下面是一个提供一些闪烁代码的快速示例:

#include "FastLED.h"

CRGB leds[1];
void setup() {
  FastLED.addLeds<NEOPIXEL, 6>(leds, 1);
}
void loop() {
  leds[0] = CRGB::White;
  FastLED.show();
  delay(30);
  leds[0] = CRGB::Black;
  FastLED.show();
  delay(30);
}

HSV Library HSV文库

Unsatisfied with the state of a lot of the HSV and color wheel libraries, we put a lot of work into providing an HSV to RGB conversion library that is fast and adjusted for human color perception. Why use the HSV color space? It’s a bit easier to navigate and provide transitions between colors than using RGB. When defining colors with RGB you’re mixing the Red, Green, and Blue color values. When using HSV, instead, you’re defining the hue of the color (that is, where it is on the color wheel), how saturated it is, and how bright it is. For example, here’s some simple code that will cycle through the colors of a rainbow:
由于对许多 HSV 和色轮库的状态不满意,我们投入了大量工作来提供 HSV 到 RGB 的转换库,该库可以快速并针对人类的颜色感知进行调整。为什么要使用 HSV 色彩空间?与使用 RGB 相比,导航和提供颜色之间的过渡要容易一些。使用 RGB 定义颜色时,您需要混合红色、绿色和蓝色值。相反,使用 HSV 时,您要定义颜色的色调(即它在色轮上的位置)、饱和度和亮度。例如,下面是一些简单的代码,这些代码将循环显示彩虹的颜色:

#include "FastLED.h"
CRGB leds[60];
void setup() {
  FastLED.addLeds<NEOPIXEL, 6>(leds, 60);
}
void loop() {
  static uint8_t hue = 0;
  FastLED.showColor(CHSV(hue++, 255, 255));
  delay(10);
}

Math Library 数学库

When doing LED programming, a lot of times you want to do math on the rgb or hsv values to help provide your transitions in brightness and color. However, the AVR/arduino platform isn’t exactly known for the fastest math out there. To help out with this, the library provides a number of math functions tuned for 8-bit operations, including scaling functions, fast sin/cos functions, fast random number generators, and interpolation and memory management functions.
在进行 LED 编程时,很多时候您希望对 rgb 或 hsv 值进行数学运算,以帮助提供亮度和颜色的过渡。然而,AVR/arduino 平台并不以最快的数学运算而闻名。为了帮助解决这个问题,该库提供了许多针对 8 位运算进行调整的数学函数,包括缩放函数、快速正弦/余弦函数、快速随机数生成器以及插值和内存管理函数。

Low level device access 低级设备访问

Finally, to do a lot of the magic in writing to LEDs, the library has some generalized classes to provide high speed, flexible access to pins and SPI hardware. While write only at the moment, this code can help you access pins and devices quicker than the stock arduino libraries do, even moreso once read support is added to the pin and spi libraries.
最后,为了在写入 LED 时发挥很多魔力,该库提供了一些通用类,以提供对引脚和 SPI 硬件的高速、灵活访问。虽然目前只能写入,但此代码可以帮助您比库存 arduino 库更快地访问引脚和设备,一旦将读取支持添加到引脚和 spi 库中,则更是如此。

leds接线

官方连接

Introduction 介绍

Obviously, before you can go about writing LED programs you need to have some LEDs hooked up to your arduino. This page proves some notes and tips for hooking up said LEDs.
显然,在开始编写 LED 程序之前,您需要将一些 LED 连接到您的 arduino。本页演示了连接所述 LED 的一些注意事项和技巧。

The Wires 接线

Most modern LED chipsets come with 3 or 4 pins or connectors on them. Some chipsets, like the WS2801, use 4 pins: Power, Ground, Data, and Clock. Others, like the WS2812B only use three: Power, Ground, and Data. Note that Power and Ground are always present. These wires are what supply power to the LEDs and allow them to light up. The Data pin is how led data gets from your arduino or micro controller to the actual LEDs. Finally, for some chipsets, the clock pin is used in conjunction with the data pin for transmitting data. See the [ChipsetOverview Chipset Overview] page for specific information on the various chipsets and what they use.
大多数现代 LED 芯片组都带有 3 或 4 个引脚或连接器。某些芯片组(如 WS2801)使用 4 个引脚:电源、接地、数据和时钟。其他的,如WS2812B只使用三种:电源、接地和数据。请注意,电源和接地始终存在。这些电线为 LED 供电并允许它们点亮。数据引脚是 LED 数据从 arduino 或微控制器传输到 LED 的方式。最后,对于某些芯片组,时钟引脚与数据引脚结合使用以传输数据。有关各种芯片组及其用途的具体信息,请参阅 [芯片组概述 芯片组概述] 页面。

Connecting the wires 连接电线

The data and clock pins connect to their appropriate pins on the arduino. There’s a variety of ways to do this, depending on the specifics of your controller. You can use jumper cables, screw terminals, solder wires directly, etc…
数据和时钟引脚连接到arduino上的相应引脚。有多种方法可以做到这一点,具体取决于控制器的具体情况。您可以直接使用跨接电缆、螺丝端子、焊锡丝等…

The power and ground pins connect to positive(+) and negative(-) on your power supply to get power to the LEDs. This should also be pretty straightforward.
电源和接地引脚连接到电源上的正极 (+) 和负极 (-),以便为 LED 供电。这也应该非常简单。

In some instances, you may also need to connect ground from the led strips to a ground pin on the arduino. This can help with keeping the data signal nice and clean.
在某些情况下,您可能还需要将 LED 灯条的接地连接到 arduino 上的接地引脚。这有助于保持数据信号的良好和干净。

A Word on Power 关于供电

LED strips and pixels usually come in one of two varieties - 5 volt (also called 5v) and 12 volt (also called 12v). Be aware of what voltage your LED pixels want! Plugging a 12v power supply into the power/ground pins of a 5v strip of led pixels may damage your LED strip. Also - be aware of the power and ground connections. Power should go to Positive(+) on your power supply and Ground should go to Negative(-). While some chipsets may protect against accidentally wiring this backwards, many more done and, once again, doing so may damage your chips.
LED 灯条和像素通常有两种类型之一 - 5 伏和 12 伏。注意您的 LED 像素需要什么电压!将 12v 电源插入 5v LED 像素条的电源/接地引脚可能会损坏您的 LED 灯条。另外 - 请注意电源和接地连接。电源应变为正极 (+),接地应变为负极 (-)。虽然某些芯片组可以防止意外向后接线,但更多的芯片组这样做可能会损坏您的芯片。

The brighter your LEDs are run, the more power they are going to draw. Many arduino devices have a 5v power pin, and it is often tempting to just connect a line from there to your LEDs. However, it is very easy for LEDs to draw a lot of current, more than the arduino can push through its 5v line. The end result may either be your LEDs not being as bright as you like, or perhaps glitching out and glowing a dim red instead of the colors you want, or worse, possibly damaging your arduino by attempting to draw too much current through and burning something out on the board.
LED 运行得越亮,它们消耗的功率就越大。许多 arduino 设备都有一个 5v 引脚,通常从那里将一根线连接到您的 LED。然而,LED 很容易消耗大量电流,超过了 arduino 可以推动其 5v 线路的电流。最终结果可能是您的 LED 没有您喜欢的那么亮,或者可能会出现故障并发出暗红色而不是您想要的颜色,或者更糟糕的是,可能会损坏您的 arduino 试图通过过多的电流并在板上烧掉一些东西。

It is generally considered much better to wire power to the leds independently of the arduino. Most easily, this is done with a splitter from your power supply - with one power lead going to the arduino and the other power lead going to your leds. This will ensure that everything gets all the power that it wants!
通常认为将LED电源连接到独立于 arduino要好得多。最简单的是,这是通过电源的分路器完成的 - 一根电源线连接到 arduino,另一根电源线连接到您的 LED。这将确保一切都获得它想要的所有电力!

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

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

相关文章

Jenkins三种构建类型

目录 传送门前言一、概念二、前置处理&#xff08;必做&#xff09;1、赋予777权限2、让jenkins用户拥有root用户的kill权限3、要运行jar包端口号需要大于1024 三、自由风格软件项目&#xff08;FreeStyle Project&#xff09;&#xff08;推荐&#xff09;三、Maven项目&#…

最全面又最浅显易懂的Langchain快速上手教程(下)

最全面又最浅显易懂的Langchain快速上手教程&#xff08;下&#xff09; 三. 深入Langchain 1. 架构设计 从上文知道Langchain在架构上使用了从抽象、到具体、再到整合适配的三层架构&#xff0c;这种一层一层逐渐具体的设计最大可能性的保证了架构的可扩展性和维护性。同时…

【Python】 探索 Python 中的 Ellipsis 对象:一个神奇的省略号

基本原理 在 Python 中&#xff0c;Ellipsis 对象是一个特殊的内置对象&#xff0c;它通常用三个连续的点 ... 来表示。这个对象在 Python 中有几个特定的用途&#xff0c;尤其是在切片操作和迭代器表达式中。虽然它看起来像是一个普通的省略号&#xff0c;但它实际上是 Pytho…

DeepSORT(目标跟踪算法)中自由度决定卡方分布的形状

DeepSORT&#xff08;目标跟踪算法&#xff09;中自由度决定卡方分布的形状 flyfish 重要的两个点 自由度决定卡方分布的形状&#xff08;本文&#xff09; 马氏距离的平方在多维正态分布下服从自由度为 k 的卡方分布 独立的信息 在统计学中&#xff0c;独立的信息是指数据…

MySQL的group by与count(), *字段使用问题

文章目录 问题group by到底做了什么举个例子简单来说为什么select字段&#xff0c;count()不能和*共同使用总结 问题 这是一段摘抄自MySQL官网的文字。其大致意思是MySQL拓展了group by的使用&#xff0c;MySQL允许选择没有出现在group by中的字段。换句话说&#xff0c;标准SQ…

覆盖路径规划经典算法 The Boustrophedon Cellular Decomposition 论文及代码详解

2000年一篇论文 Coverage of Known Spaces: The Boustrophedon Cellular Decomposition 横空出世&#xff0c;解决了很多计算机和机器人领域的覆盖路径问题&#xff0c;今天我来详细解读这个算法。 The Boustrophedon Cellular Decomposition 算法详解 这篇论文标题为"C…

【Qt】TreeWidget中Item的UserCheckable注意事项,没有出现多选框

1. 异常 开启 ItemIsUserCheckable以后&#xff0c;界面上没有出现多选框。 QTreeWidgetItem *item new QTreeWidgetItem();item->setText(0, "hello");item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsSelectable |Qt::ItemIsEnabled | Qt::ItemIsAuto…

最新thinkphp5内核全开源女神赢口红H5公众号版第五版(100%可经营)

最新thinkphp5内核全开源女神赢口红H5公众号版第五版&#xff08;100%可经营&#xff09; 搭建教程 1、程序为thinkPHP5开发 php版本要求5.6&#xff01;不支持虚拟主机&#xff01; 2、上传程序到您的根目录&#xff01;导入m213.sql文件&#xff01;修改数据库配置文件app…

Github 2024-06-10 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-06-10统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量C项目2Go项目2PHP项目1Blade项目1TypeScript项目1Lua项目1Dart项目1Swift项目1Cuda项目1Python项目1MDX项目1Ventoy: 100%开源的可启动USB解决方…

考虑双碳分时价格的综合能源系统低碳优化调度

目录 一、主要内容介绍&#xff1a; 二、仿真结果&#xff1a; 三、研究内容&#xff1a; 四、代码下载&#xff1a; 一、主要内容介绍&#xff1a; 在含电热气多种能源的综合能源系统中&#xff0c;复杂的能量转换关系以及可再生能源和负荷的波动性&#xff0c;给综合能源…

必备:产品经理工作文档大全

产品经理&#xff08;英文&#xff1a;Product manager&#xff0c;缩写&#xff1a;PM&#xff09;也称产品企划&#xff0c;是指在公司中针对某项或某类的产品进行规划和管理的人员&#xff0c;主要负责产品的研发、制造、营销、渠道等工作。 产品经理是很难定义的一个角色&a…

群体优化算法---水波优化算法介绍以及应用于聚类数据挖掘代码示例

介绍 水波优化算法&#xff08;Water Wave Optimization, WWO&#xff09;是一种新兴的群智能优化算法&#xff0c;灵感来自水波在自然环境中的传播和衰减现象。该算法模拟了水波在水面上传播和碰撞的行为&#xff0c;通过这些行为来寻找问题的最优解。WWO算法由三种主要的操作…

如何发挥物联网电能表的优势

发挥物联网电能表的优势&#xff0c;对于提升电力系统的智能化水平、优化电力资源配置、提高用电效率以及促进环保发展等方面都具有重要意义。 一、实时监测与数据分析 物联网电能表的核心优势在于其能够实时监测电力使用情况&#xff0c;并通过无线网络将数据传输到云平台。…

【数据结构】图论——AOV和AOE(拓扑排序、存放表达式、关键活动、关键路径)

目录 AOV和AOEAOV 有向无环图及其应用(拓扑结构)有向无环图的应用——存放表达式二叉树存放表达式图存放表达式 AOE 有向无环图及其应用——关键路径1. 事件的最早发生时间事件&#xff08;顶点&#xff09;最早发生时间的计算方法&#xff1a; 2. 事件允许的最晚发生时间事件(…

CV每日论文--2024.6.7

1、Convolutional Neural Networks and Vision Transformers for Fashion MNIST Classification: A Literature Review 中文标题&#xff1a;卷积神经网络和视觉变换器在Fashion MNIST分类任务中的应用:文献综述 简介&#xff1a;本文综述了在Fashion MNIST数据集上使用卷积神…

idea鼠标滚轮滚动放大缩小字体

在idea中的【file】->【settings】菜单&#xff0c;弹出settings窗口&#xff0c;点击窗口中的【Editor】->【General】&#xff0c;在右侧窗口中&#xff0c;选中【Change font size with CtrlMouse Wheel in All editors】即可。

mmyolo

cal_map2测试有问题&#xff0c; /home/lsw/miniconda3/envs/mmyolo/lib/python3.8/site-packages/torch/functional.py:445: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at ../aten/s…

力扣第十题 10.正则表达式匹配

目录 题目 解题思路 正则表达式代码 动态规划代码 官方解题 题目 解题思路 这次也给我捡到狗运了&#xff0c;反正只要一直上传&#xff0c;内存总会遥遥领先的&#xff0c;只要在你速度领先了的情况下。 这次题目还是想当的困难的。我们有两种思路&#xff0c;一种就是使…

Android AOSP定制去掉Google搜索栏

Android AOSP定制去掉Google搜索栏 1.前言&#xff1a; ​ 最近接触了Android系统定制的需求&#xff0c;感觉非常有意思&#xff0c;之前做过Launcher和串口&#xff0c;也自己安装过虚拟机&#xff0c;不过几年没用Linux系统了有点不习惯&#xff0c;Linux命令也不熟悉&…

[Elasticsearch] ES更新问题踩坑记录

drop table if exists tmp.test_create_table; create table if not exists tmp.test_create_table( id int, name string ) stored as parquet; 问题排查 查看ES数据 发现ES创建表的状态没有正常更新 yn 还是0 查看日志 查看日志, 截取部分关键信息: ReceiverControl…