fastLED库函数介绍

您所在的位置:网站首页 arduino查看库函数 fastLED库函数介绍

fastLED库函数介绍

2023-09-20 06:13| 来源: 网络整理| 查看: 265

index 一、基础函数1. `FastLED.addLeds(leds , NUM_LEDS)`2. `FastLED.show();`3. `FastLED.clear();`4. `FastLED.setBrightness(30)`5. `fill_solid(leds, 30, CRGB::Red)`6. fill_rainbow(leds, 30, beginHue, deltaHue)7. fill_gradient_RGB(leds, 0, CRGB::Red, 29, CRGB::Blue)8. fill_gradient(leds, 0, CHSV(50, 255,255) , 29, CHSV(150,255,255), SHORTEST_HUES)9. fill_palette (leds, 30, 0, 8, OceanColors_p, 255, LINEARBLEND);10. ColorFromPalette11. fadeToBlackBy 二、灯的操作1. leds[dot] = CRGB::Blue2. leds[0] = ColorFromPalette( RainbowColors_p, 0, 128, LINEARBLEND) 三、其他函数0.1. beatsin82. random83. EVERY_N_SECONDS4. EVERY_N_MILLISECONDS

一、基础函数 1. FastLED.addLeds(leds , NUM_LEDS)

初始化LED控制光带

WS2812:控制灯珠的类型LED_PIN:控制板上使用的IO端口GRB:色彩类型leds:光带NUM_LEDS:灯珠的总数量 2. FastLED.show();

刷新灯的色彩显示

3. FastLED.clear();

将所有灯熄灭

4. FastLED.setBrightness(30)

设置灯带亮度,最大为255

5. fill_solid(leds, 30, CRGB::Red)

将leds光带的从头数前30个灯珠设置为红色

leds:光带30:从起始位置开始算的数量CRGB::Red:设置的颜色值

fill_solid(leds+5, 3, CRGB::Red) 设置leds光带从头数第6个光珠到后面3个光珠颜色为红色

6. fill_rainbow(leds, 30, beginHue, deltaHue)

将leds光带的从头数30个灯珠设置为渐变彩虹色

leds:光带30:从起始位置开始算的数量beginHue:彩虹色的其实色调值,最大为255deltaHue:相邻灯珠的色调差,最大为255

fill_rainbow(leds+5, 30, beginHue, deltaHue) 设置leds光带从头数第6个光珠到后面的30个光珠颜色的彩虹色

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

将leds光带的从头数30个灯珠设置为渐变色

leds:光带0:开始的灯珠编号CRGB::Red:开始的颜色29:最后一个灯珠的编号CRGB::Blue:结束的颜色

用法 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)色彩。灯带颜色过度采用长色调过渡方式。

#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(leds, NUM_LEDS); // 初始化光带 FastLED.setBrightness(max_bright); // 设置光带亮度 } void loop () { // fill_gradient 显示两种颜色 //fill_gradient(leds, 0, CHSV(50, 255,255) , 29, CHSV(150,255,255), SHORTEST_HUES); fill_gradient(leds, 0, CHSV(50, 255,255) , 29, CHSV(150,255,255), LONGEST_HUES); FastLED.show(); delay(50); } 8. fill_gradient(leds, 0, CHSV(50, 255,255) , 29, CHSV(150,255,255), SHORTEST_HUES) CHSV(50, 255,255):起始色彩,HSV格式CHSV(150,255,255):结束色彩SHORTEST_HUES:采用短色过渡方式,两个颜色值之间最短的颜色过渡 fill_gradient(leds, 0, CHSV(50, 255,255) , 29, CHSV(150,255,255),LONGEST_HUES)

LONGEST_HUES:采用长色过渡方式,两个颜色值之间最长的颜色过渡

注意:使用SHORTEST_HUES和LONGEST_HUES的时候必须采用CHVS方式填色

9. fill_palette (leds, 30, 0, 8, OceanColors_p, 255, LINEARBLEND);

将leds光带的从头数30个灯珠设置为渐变色。渐变色的色彩全部来自FastLED预设色板OceanColors_p

leds:灯带30:从起始位置开始算的数量0:灯带头部第一个灯珠的色板色彩序号8:相邻两个灯珠见色板色彩需要相差8OceanColors_p:预设色板255:亮度最高255LINEARBLEND:线性过渡效果 fill_palette (leds+5, 15, 31, 5, OceanColors_p, 255, LINEARBLEND);

设置光带开头第6个灯珠到后面的15个灯珠为OceanColors_p色板所设定的颜色,颜色编号从第31开始,间隔5的线性渐变

预设色板有:CloudColors_p、LavaColors_p、OceanColors_p、ForestColors_p、RainbowColors_p、RainbowStripeColors_p、PartyColors_p、HeatColors_p

10. ColorFromPalette

ColorFromPalette函数返回指定色板中的颜色。我们可以将ColorFromPalette的返回值设置LED色彩。

用法 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)。

如需了解更多FastLED库色板的知识,请点击这里。

#include "FastLED.h" // 此示例程序需要使用FastLED库 #define NUM_LEDS 30 // LED灯珠数量 #define DATA_PIN 9 // Arduino输出控制信号引脚 #define LED_TYPE WS2812 // LED灯带型号 #define COLOR_ORDER GRB // RGB灯珠中红色、绿色、蓝色LED的排列顺序 #define twinkleInterval 100 // 闪烁间隔时间 (毫秒) #define twinkleChance 80 // 闪烁数量,数值越大闪烁越多(0-255) uint8_t max_bright = 128; // LED亮度控制变量,可使用数值为 0 ~ 255, 数值越大则光带亮度越高 CRGB leds[NUM_LEDS]; // 建立光带leds void setup() { Serial.begin(9600); // 启动串行通讯 delay(1000); // 稳定性等待 LEDS.addLeds(leds, NUM_LEDS); // 初始化光带 FastLED.setBrightness(max_bright); // 设置光带亮度 } void loop() { int pos = random8(NUM_LEDS); EVERY_N_MILLISECONDS( twinkleInterval ) { if( random8() fadeToBlackBy( leds, NUM_LEDS, 10); } FastLED.show(); delay(50); } 11. fadeToBlackBy

fadeToBlackBy函数将逐渐熄灭LED光带。

Example showing how fadeToBlackBy works. Open the serial monitor to see r,g,b values. Each time fadeToBlackBy(X) is called it will fade a pixel’s r,g,b values by a certain percentage. Calling it repeatedly will eventually fade to black (where r,g,b = 0,0,0). Note that the specified number is a percentage out of 255, so for example, using 64 would be 64/255 = 25%, and using 10 would be 10/255 = 4%. 0 would be no fading.

示例显示fadeToBlackBy如何工作。打开串行显示器,查看r,g,b的值。 每次调用fadeToBlackBy(X)时,它将使像素的r,g,b值按一定百分比褪色。反复调用它将最终消失为黑色(其中r,g,b = 0,0,0)。 注意,指定的数字是255的百分比,因此,例如,使用64将是64/255 = 25%,使用10将是10/255 = 4%。0表示没有衰落。 It can be used to fade all leds of a CRGB array like:它可以用来减弱CRGB阵列的所有led,比如:

fadeToBlackBy(leds, NUM_LEDS, 128); // 128/255 = 50% Or can be used to fade a specific pixel.或可用于使特定像素褪色。 leds[i].fadeToBlackBy(128); // fade by 50%

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

示例程序

#include "FastLED.h" // 此示例程序需要使用FastLED库 #define NUM_LEDS 30 // LED灯珠数量 #define DATA_PIN 9 // Arduino输出控制信号引脚 #define LED_TYPE WS2812 // LED灯带型号 #define COLOR_ORDER GRB // RGB灯珠中红色、绿色、蓝色LED的排列顺序 #define twinkleInterval 100 // 闪烁间隔时间 (毫秒) #define twinkleChance 80 // 闪烁数量,数值越大闪烁越多(0-255) uint8_t max_bright = 128; // LED亮度控制变量,可使用数值为 0 ~ 255, 数值越大则光带亮度越高 CRGB leds[NUM_LEDS]; // 建立光带leds void setup() { Serial.begin(9600); // 启动串行通讯 delay(1000); // 稳定性等待 LEDS.addLeds(leds, NUM_LEDS); // 初始化光带 FastLED.setBrightness(max_bright); // 设置光带亮度 } 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); } 二、灯的操作 1. leds[dot] = CRGB::Blue

将某个LED设置为指定颜色

leds[dot].r=128

将灯的r,g,b颜色进行分别设置,最大为255

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

将灯带中第一个灯珠的颜色设置为RainbowColors_p色板指定的颜色

RainbowColors_p:使用色板0:颜色序号128:亮度LINEARBLEND:线性渐变 三、其他函数 0. LIB8STATIC uint16_t beatsin16 ( accum88 beats_per_minute, uint16_t 最低= 0, uint16_t 最高= 65535, uint32_t 时基= 0, uint16_t phase_offset =0 )

beatsin16以给定的BPM产生16位正弦波,在给定范围内振荡。

1. beatsin8

原文:http://www.taichi-maker.com/homepage/reference-index/arduino-library-index/fastled-library/beatsin8/

beatsin8可以视作一个信号发生器。它的返回值会沿着正弦曲线返回数值。

用法

beatsin8(beats_per_minute, lowest, highest)

参数

beats_per_minute: 每分钟产生循环次数 lowest: 最小值 lowest: 最大值

示例语句

以下图示为 beatsin8(10, 0, 255) 返回值示意图。↓ 这一示例语句中第一个参数为10。这说明此函数所产生的正弦曲线周期时间为6秒(1分钟有60秒,60除以参数10等于6秒钟)。第二个参数为0。这说明此函数所产生的正弦曲线最小返回值为0(如图中绿色数字所示)。第三个参数为255。这说明此函数所产生的正弦曲线最大返回值为255(如图中红色数字所示)。 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

2. random8

random8函数将返回0-255之间的随机数值。返回值最大值可以设置为自定义的0-255间数值 用法 random8() 以上语句将返回0-255之间的随机数值。

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

示例程序 Arduino

#include "FastLED.h" // FastLED库 void setup() { Serial.begin(9600); } void loop() { //串口监视器输出random8函数返回数值 Serial.println(random8(10)); delay(50); } 3. EVERY_N_SECONDS

EVERY_N_SECONDS函数所包含的程序内容将定时执行。执行时间间隔由函数参数决定。

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

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

示例程序

#include "FastLED.h" // 此示例程序需要使用FastLED库 #define NUM_LEDS 30 // LED灯珠数量 #define DATA_PIN 9 // Arduino输出控制信号引脚 #define LED_TYPE WS2812 // LED灯带型号 #define COLOR_ORDER GRB // RGB灯珠中红色、绿色、蓝色LED的排列顺序 #define twinkleInterval 100 // 闪烁间隔时间 (毫秒) #define twinkleChance 80 // 闪烁数量,数值越大闪烁越多(0-255) uint8_t max_bright = 128; // LED亮度控制变量,可使用数值为 0 ~ 255, 数值越大则光带亮度越高 CRGB leds[NUM_LEDS]; // 建立光带leds void setup() { Serial.begin(9600); // 启动串行通讯 delay(1000); // 稳定性等待 LEDS.addLeds(leds, NUM_LEDS); // 初始化光带 FastLED.setBrightness(max_bright); // 设置光带亮度 } 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); } 4. EVERY_N_MILLISECONDS

EVERY_N_SECONDS函数所包含的程序内容将定时执行。执行时间间隔由函数参数决定。

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

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

** 示例程序**

#include "FastLED.h" // 此示例程序需要使用FastLED库 #define NUM_LEDS 30 // LED灯珠数量 #define DATA_PIN 9 // Arduino输出控制信号引脚 #define LED_TYPE WS2812 // LED灯带型号 #define COLOR_ORDER GRB // RGB灯珠中红色、绿色、蓝色LED的排列顺序 #define twinkleInterval 100 // 闪烁间隔时间 (毫秒) #define twinkleChance 80 // 闪烁数量,数值越大闪烁越多(0-255) uint8_t max_bright = 128; // LED亮度控制变量,可使用数值为 0 ~ 255, 数值越大则光带亮度越高 CRGB leds[NUM_LEDS]; // 建立光带leds void setup() { Serial.begin(9600); // 启动串行通讯 delay(1000); // 稳定性等待 LEDS.addLeds(leds, NUM_LEDS); // 初始化光带 FastLED.setBrightness(max_bright); // 设置光带亮度 } 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); }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3