WS2812中使用到的库函数为 FASTLED.H 。
此处引用太极创客的连接图。
/*
* blinkOne
* 太极创客 http://www.taichi-maker.com/
* 03/01/2018
*
* =====================功能说明=====================
* 使用Arduino Uno开发板控制WS2812光带一个灯珠的闪烁。
*
* 本示例程序需要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 DATA_PIN 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() {
Serial.begin(9600); // 启动串行通讯
delay(1000); // 稳定性等待
LEDS.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS); // 初始化光带
FastLED.setBrightness(max_bright); // 设置光带亮度
}
void loop() {
leds[0] = CRGB::Red; // 设置光带中第一个灯珠颜色为红色,leds[0]为第一个灯珠,leds[1]为第二个灯珠
FastLED.show(); // 更新LED色彩
delay(500); // 等待500毫秒
leds[0] = CRGB::Black; // 设置光带中第一个灯珠颜色为红色,leds[0]为第一个灯珠,leds[1]为第二个灯珠
FastLED.show(); // 更新LED色彩
delay(500); // 等待500毫秒
}
/*
CRGB 颜色名称列表
CRGB::AliceBlue
CRGB::Amethyst
CRGB::AntiqueWhite
CRGB::Aqua
CRGB::Aquamarine
CRGB::Azure
CRGB::Beige
CRGB::Bisque
CRGB::Black
CRGB::BlanchedAlmond
CRGB::Blue
CRGB::BlueViolet
CRGB::Brown
CRGB::BurlyWood
CRGB::CadetBlue
CRGB::Chartreuse
CRGB::Chocolate
CRGB::Coral
CRGB::CornflowerBlue
CRGB::Cornsilk
CRGB::Crimson
CRGB::Cyan
CRGB::DarkBlue
CRGB::DarkCyan
CRGB::DarkGoldenrod
CRGB::DarkGray
CRGB::DarkGreen
CRGB::DarkKhaki
CRGB::DarkMagenta
CRGB::DarkOliveGreen
CRGB::DarkOrange
CRGB::DarkOrchid
CRGB::DarkRed
CRGB::DarkSalmon
CRGB::DarkSeaGreen
CRGB::DarkSlateBlue
CRGB::DarkSlateGray
CRGB::DarkTurquoise
CRGB::DarkViolet
CRGB::DeepPink
CRGB::DeepSkyBlue
CRGB::DimGray
CRGB::DodgerBlue
CRGB::FireBrick
CRGB::FloralWhite
CRGB::ForestGreen
CRGB::Fuchsia
CRGB::Gainsboro
CRGB::GhostWhite
CRGB::Gold
CRGB::Goldenrod
CRGB::Gray
CRGB::Green
CRGB::GreenYellow
CRGB::Honeydew
CRGB::HotPink
CRGB::IndianRed
CRGB::Indigo
CRGB::Ivory
CRGB::Khaki
CRGB::Lavender
CRGB::LavenderBlush
CRGB::LawnGreen
CRGB::LemonChiffon
CRGB::LightBlue
CRGB::LightCoral
CRGB::LightCyan
CRGB::LightGoldenrodYellow
CRGB::LightGreen
CRGB::LightGrey
CRGB::LightPink
CRGB::LightSalmon
CRGB::LightSeaGreen
CRGB::LightSkyBlue
CRGB::LightSlateGray
CRGB::LightSteelBlue
CRGB::LightYellow
CRGB::Lime
CRGB::LimeGreen
CRGB::Linen
CRGB::Magenta
CRGB::Maroon
CRGB::MediumAquamarine
CRGB::MediumBlue
CRGB::MediumOrchid
CRGB::MediumPurple
CRGB::MediumSeaGreen
CRGB::MediumSlateBlue
CRGB::MediumSpringGreen
CRGB::MediumTurquoise
CRGB::MediumVioletRed
CRGB::MidnightBlue
CRGB::MintCream
CRGB::MistyRose
CRGB::Moccasin
CRGB::NavajoWhite
CRGB::Navy
CRGB::OldLace
CRGB::Olive
CRGB::OliveDrab
CRGB::Orange
CRGB::OrangeRed
CRGB::Orchid
CRGB::PaleGoldenrod
CRGB::PaleGreen
CRGB::PaleTurquoise
CRGB::PaleVioletRed
CRGB::PapayaWhip
CRGB::PeachPuff
CRGB::Peru
CRGB::Pink
CRGB::Plaid
CRGB::Plum
CRGB::PowderBlue
CRGB::Purple
CRGB::Red
CRGB::RosyBrown
CRGB::RoyalBlue
CRGB::SaddleBrown
CRGB::Salmon
CRGB::SandyBrown
CRGB::SeaGreen
CRGB::Seashell
CRGB::Sienna
CRGB::Silver
CRGB::SkyBlue
CRGB::SlateBlue
CRGB::SlateGray
CRGB::Snow
CRGB::SpringGreen
CRGB::SteelBlue
CRGB::Tan
CRGB::Teal
CRGB::Thistle
CRGB::Tomato
CRGB::Turquoise
CRGB::Violet
CRGB::Wheat
CRGB::White
CRGB::WhiteSmoke
CRGB::Yellow
CRGB::YellowGreen
*/
LED基本设置
leds[0] = CRGB::Red; // 将光带上第1个LED灯珠设置为红颜色
FastLED.show(); // 点亮/更新LED
...
leds[0].r = 255; // 将光带上第1个LED灯珠的RGB数值中R数值设置为255
leds[0].g = 125; // 将光带上第1个LED灯珠的RGB数值中G数值设置为255
leds[0].b = 0; // 将光带上第1个LED灯珠的RGB数值中B数值设置为0
FastLED.show(); // 点亮/更新LED
FastLED.setBrightness();
FastLED.setBrightness函数设置LED光带亮度。LED亮度值可选数值范围为0 – 255。
FastLED.show();
该函数在每一次更新灯珠颜色时都需要使用一次,以刷新灯珠颜色。若不使用则会保留上一次使用的灯珠颜色。
fillSolid
fillSolid函数将LED光带设置为同一颜色
用法
fill_solid(leds, 30, CRGB::Red)
以上语句将leds光带的从头数30个灯珠设置为红颜色。
fill_solid(leds+5, 3, CRGB::Red);
以上语句将leds光带的从头数第6个灯珠开始算起的3个灯珠设置为红颜色。
fillRainbow
fillRainbow函数将LED光带设置为渐变彩虹色
用法
fill_rainbow(leds, 30, beginHue, deltaHue)
以上语句将leds光带的从头数30个灯珠设置为渐变彩虹色。beginHue参数为起始色调数值。deltaHue为相邻LED灯珠色调差。
fill_rainbow(leds+5, 30, 0, 1)
以上语句将leds光带的从头数30个灯珠设置为渐变彩虹色。起始色调数值为0。相邻LED灯珠色调差为1。